一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - C# - C#微信公眾平臺開發之access_token的獲取存儲與更新

C#微信公眾平臺開發之access_token的獲取存儲與更新

2021-11-16 14:48秋荷雨翔 C#

這篇文章主要介紹了C#微信公眾平臺開發之access_token的獲取存儲與更新的相關資料,需要的朋友可以參考下

一、什么是access_token?

    access_token是公眾號的全局唯一票據,公眾號調用各接口時都需使用access_token。正常情況下access_token有效期為7200秒,重復獲取將導致上次獲取的access_token失效。由于獲取access_token的api調用次數非常有限,建議開發者全局存儲與更新access_token,頻繁刷新access_token會導致api調用受限,影響自身業務。

二、要解決的問題

1、如何獲取access_token。

2、由于access_token的有效期為7200秒,即2小時,并且重復獲取將導致上次獲取的access_token失效,獲取access_token的api調用次數非常有限,所以要解決如何全局存儲與更新access_token。

三、思路

1、將access_token存儲在數據庫中。

2、何時更新access_token呢?當access_token失效的時候更新,那么怎么判斷access_token有沒有失效呢?使用當前的access_token請求微信接口,獲取自定義菜單,如果返回的errcode為42001,則說明access_token已經失效,這時再重新獲取access_token。

數據庫設計(表名swx_config):

C#微信公眾平臺開發之access_token的獲取存儲與更新

四、代碼:

1、http請求代碼(httprequestutil類):

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#region 請求url,不發送數據
/// <summary>
/// 請求url,不發送數據
/// </summary>
public static string requesturl(string url)
{
 return requesturl(url, "post");
}
#endregion
 
#region 請求url,不發送數據
/// <summary>
/// 請求url,不發送數據
/// </summary>
public static string requesturl(string url, string method)
{
 // 設置參數
 httpwebrequest request = webrequest.create(url) as httpwebrequest;
 cookiecontainer cookiecontainer = new cookiecontainer();
 request.cookiecontainer = cookiecontainer;
 request.allowautoredirect = true;
 request.method = method;
 request.contenttype = "text/html";
 request.headers.add("charset", "utf-8");
 
 //發送請求并獲取相應回應數據
 httpwebresponse response = request.getresponse() as httpwebresponse;
 //直到request.getresponse()程序才開始向目標網頁發送post請求
 stream responsestream = response.getresponsestream();
 streamreader sr = new streamreader(responsestream, encoding.utf8);
 //返回結果網頁(html)代碼
 string content = sr.readtoend();
 return content;
}
#endregion

2、輔助方法(tools類):

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
namespace swx.utils
{
 /// <summary>
 /// 工具類
 /// </summary>
 public class tools
 {
  #region 獲取json字符串某節點的值
  /// <summary>
  /// 獲取json字符串某節點的值
  /// </summary>
  public static string getjsonvalue(string jsonstr, string key)
  {
   string result = string.empty;
   if (!string.isnullorempty(jsonstr))
   {
    key = "\"" + key.trim('"') + "\"";
    int index = jsonstr.indexof(key) + key.length + 1;
    if (index > key.length + 1)
    {
     //先截逗號,若是最后一個,截“}”號,取最小值
     int end = jsonstr.indexof(',', index);
     if (end == -1)
     {
      end = jsonstr.indexof('}', index);
     }
 
     result = jsonstr.substring(index, end - index);
     result = result.trim(new char[] { '"', ' ', '\'' }); //過濾引號或空格
    }
   }
   return result;
  }
  #endregion
 
 }
}

3、判斷access_token是否過期(wxapi類):

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#region 驗證token是否過期
/// <summary>
/// 驗證token是否過期
/// </summary>
public static bool tokenexpired(string access_token)
{
 string jsonstr = httprequestutil.requesturl(string.format("https://api.weixin.qq.com/cgi-bin/menu/get?access_token={0}", access_token));
 if (tools.getjsonvalue(jsonstr, "errcode") == "42001")
 {
  return true;
 }
 return false;
}
#endregion

4、請求微信接口,獲取access_token(wxapi類):

?
1
2
3
4
5
6
7
8
9
10
#region 獲取token
/// <summary>
/// 獲取token
/// </summary>
public static string gettoken(string appid, string secret)
{
 string strjson = httprequestutil.requesturl(string.format("https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={0}&secret={1}", appid, secret));
 return tools.getjsonvalue(strjson, "access_token");
}
#endregion

5、全局存儲與更新access_token(adminutil類):

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#region 獲取access_token
/// <summary>
/// 獲取access_token
/// </summary>
public static string getaccesstoken(pagebase page)
{
 string access_token = string.empty;
 
 userinfo user = getloginuser(page);
 if (user != null)
 {
  if (string.isnullorwhitespace(user.access_token)) //尚未保存過access_token
  {
   access_token = wxapi.gettoken(user.appid, user.appsecret);
  }
  else
  {
   if (wxapi.tokenexpired(user.access_token)) //access_token過期
   {
    access_token = wxapi.gettoken(user.appid, user.appsecret);
   }
   else
   {
    return user.access_token;
   }
  }
 
  mssqlhelper.executesql(string.format("update swx_config set access_token='{0}' where username='{1}'", access_token, user.username));
 }
 
 return access_token;
}
#endregion

以上就是本文的全部內容,希望對大家進行微信公眾平臺開發有所幫助。

延伸 · 閱讀

精彩推薦
  • C#Unity3D實現虛擬按鈕控制人物移動效果

    Unity3D實現虛擬按鈕控制人物移動效果

    這篇文章主要為大家詳細介紹了Unity3D實現虛擬按鈕控制人物移動效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一...

    shenqingyu060520232410972022-03-11
  • C#C#實現XML文件讀取

    C#實現XML文件讀取

    這篇文章主要為大家詳細介紹了C#實現XML文件讀取的相關代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    Just_for_Myself6702022-02-22
  • C#C#設計模式之Visitor訪問者模式解決長隆歡樂世界問題實例

    C#設計模式之Visitor訪問者模式解決長隆歡樂世界問題實例

    這篇文章主要介紹了C#設計模式之Visitor訪問者模式解決長隆歡樂世界問題,簡單描述了訪問者模式的定義并結合具體實例形式分析了C#使用訪問者模式解決長...

    GhostRider9502022-01-21
  • C#C# 實現對PPT文檔加密、解密及重置密碼的操作方法

    C# 實現對PPT文檔加密、解密及重置密碼的操作方法

    這篇文章主要介紹了C# 實現對PPT文檔加密、解密及重置密碼的操作方法,非常不錯,具有參考借鑒價值,需要的朋友可以參考下...

    E-iceblue5012022-02-12
  • C#C#裁剪,縮放,清晰度,水印處理操作示例

    C#裁剪,縮放,清晰度,水印處理操作示例

    這篇文章主要為大家詳細介紹了C#裁剪,縮放,清晰度,水印處理操作示例,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    吳 劍8332021-12-08
  • C#WPF 自定義雷達圖開發實例教程

    WPF 自定義雷達圖開發實例教程

    這篇文章主要介紹了WPF 自定義雷達圖開發實例教程,本文介紹的非常詳細,具有參考借鑒價值,需要的朋友可以參考下...

    WinterFish13112021-12-06
  • C#深入解析C#中的交錯數組與隱式類型的數組

    深入解析C#中的交錯數組與隱式類型的數組

    這篇文章主要介紹了深入解析C#中的交錯數組與隱式類型的數組,隱式類型的數組通常與匿名類型以及對象初始值設定項和集合初始值設定項一起使用,需要的...

    C#教程網6172021-11-09
  • C#C#通過KD樹進行距離最近點的查找

    C#通過KD樹進行距離最近點的查找

    這篇文章主要為大家詳細介紹了C#通過KD樹進行距離最近點的查找,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    帆帆帆6112022-01-22
主站蜘蛛池模板: 精品国产精品人妻久久无码五月天 | 5g影院天天影院天天爽影院网站 | 国产精品亚洲一区二区久久 | 国产毛片一级aaaaa片 | 成人永久免费视频 | 欧美精品一区视频 | 884hutv四虎永久7777 | 久久免费国产 | 亚洲一区二区三区免费视频 | 天天色综合久久 | 久久无码AV亚洲精品色午夜麻豆 | 国产91精选学生在线观看 | 男人在线网址 | 国产重口老太伦 | 古装一级无遮挡毛片免费观看 | 超级乱淫变态伦短篇小说全集 | 吃大胸寡妇的奶 | 国产午夜精品一区二区 | 国产一级精品高清一级毛片 | 精品视频久久久久 | 人与善xuanwen在线400 | 波多野结衣在线看 | 免费观看a毛片一区二区不卡 | 日本高清在线看 | 成人国产精品一区二区不卡 | 热久久99精品这里有精品 | 极品丝袜小说全集 | 91亚洲一区二区在线观看不卡 | 国产成+人+综合+亚洲欧美丁香花 | 亚洲国产剧情中文视频在线 | 免费一级毛片在线播放 | 日本aaa大片 | 国产一卡二卡3卡4卡更新 | 日韩欧美精品一区二区 | 午夜影院在线免费观看 | 欧美三级不卡在线观线看高清 | 国产日韩一区二区三区 | 男人狂躁女人gif动态图 | gogort99人体专业网站 | 91国语精品自产拍在线观看一 | 动态图啪啪120秒免费看 |