你所在的位置:微信群>互联网推广>正文

初识微信公众平台,获取接口凭证方法

原创
发布时间: 2023-07-15 13:10:24 热度: 230 作者: 李斯特 来源: 微信加 本文共 4298 字 阅读需要 15 分钟
获取access_token的方法可以分为两种:手动获取和程序获取。

获取 access_token 的方法可以分为两种:手动获取和程序获取。手动获取就是将请求内容放在浏览器的地址栏上进行直接访问;程序获取是指通过调用后台代码去获取接口凭证。在自定义开发中往往要使用程序来获取接口凭证,但本质上都是向微信服务器发送 HTTPS GET 请求。假定某微信公众平台的参数如下:

AppID=wx90b00d2ef40bde4b

AppSecret=56ea34ef1bec24d0a2e70f5f204e354e

正常情况下,微信会返回下述 JSON 数据包给公众号:

  1. {   2. "access_token":"ACCESS_TOKEN","expires_in":7200   3. }

1. 手动获取

在浏览器地址栏上输入以下内容(建议使用谷歌浏览器):

https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid= wx90b00d2ef40bde 4b&secret=56ea34ef1bec24d0a2e70f5f204e354e

获取的接口访问凭证正确时返回的字符串如图 8-1 所示。

图 8-1 正确获取接口访问凭证时返回的字符串

当 AppID 或 AppSecret 有错误时,将返回错误,这些字符串都比较长,不建议手工输入,尽量使用复制粘贴来,出现错误时返回的字符串如图 8-2 所示。

图 8-2 错误获取接口访问凭证时返回的字符串

2. 程序获取

在 C#中,访问 HTTP 链接需要使用 HttpWebRequest 类,获取凭证的示例代码如下:

  1. public class HttpService   2. {   3. /// <summary>   4. /// 处理 HTTP GET 请求,返回数据   5. /// </summary>   6. /// <param name=「url」> 请求的 URL 地址 </param>   7. /// <returns>HTTP GET 成功后返回的数据,失败抛 WebException 异常 </returns>   8. public static string Get(string url)   9. {   10. System.GC.Collect();   11. string result = 「」;   12. HttpWebRequest request = null;   13. HttpWebResponse response = null;   14. //请求 URL 以获取数据   15. try   16. {   17. //设置最大连接数   18. ServicePointManager.DefaultConnectionLimit = 200;   19. //设置 HTTPS 验证方式   20. if (url.StartsWith(「https」, StringComparison.OrdinalIgnoreCase))   21. {   22. ServicePointManager.ServerCertificateValidationCallback =   23. new RemoteCertificateValidationCallback(Check    ValidationResult);   24. }   25.   26. /***************************************************************   27. * 下面设置 HttpWebRequest 的相关属性*   28. ****************************************************************/   29. request = (HttpWebRequest)WebRequest.Create(url);   30. request.Method = 「GET」;   31.   32. //获取服务器返回   33. response = (HttpWebResponse)request.GetResponse();   34.   35. //获取 HTTP 返回数据   36. StreamReader sr = new StreamReader(response.GetResponse    Stream(), Encoding.UTF8);   37. result = sr.ReadToEnd().Trim();   38. sr.Close();   39. }   40. catch (System.Threading.ThreadAbortException e)   41. {   42. Log.Error(「HttpService」,「Thread - caught ThreadAbortException    - resetting.」);   43. Log.Error(「Exception message: {0}」, e.Message);   44. System.Threading.Thread.ResetAbort();   45. }   46. catch (WebException e)   47. {   48. Log.Error(「HttpService」, e.ToString());   49. if (e.Status == WebExceptionStatus.ProtocolError)   50. {   51. Log.Error(「HttpService」, 「StatusCode : 」 + ((Http    WebResponse)e.Response).StatusCode);   52. Log.Error(「HttpService」, 「StatusDescription : 」 +    ((HttpWebResponse)e.Response).StatusDescription);   53. }   54. throw new WxPayException(e.ToString());   55. }   56. catch (Exception e)   57. {   58. Log.Error(「HttpService」, e.ToString());   59. throw new WxPayException(e.ToString());   60. }   61. finally   62. {   63. //关闭连接和流   64. if (response != null)   65. {   66. response.Close();   67. }   68. if (request != null)   69. {   70. request.Abort();   71. }   72. }   73. return result;   74. }   75.   76. public static bool CheckValidationResult(object sender,    X509Certificate certificate, X509Chain chain, SslPolicyErrors errors)   77. {   78. //直接确认,否则打不开   79. return true;   80. }   81. }

版权保护: 本文由 李斯特 原创,转载请保留链接: https://www.wechatadd.com/artdet/9579