zoukankan      html  css  js  c++  java
  • 微信企业号 获取AccessToken

    目录

    1. AccessToken介绍

    2. 示例代码

    1. AccessToken介绍

    1.1 什么是AccessToken

    AccessToken即访问凭证,业务服务器每次主动调用企业号接口时需要带上AccessToken参数。

    :主动调用是指业务服务器调用企业号接口的操作过程,如通讯录管理、应用管理。

    文档http://qydev.weixin.qq.com/wiki/index.php?title=主动调用

    1.2 获取AccessToken

    AccessToken需要用CorpID和Secret来换取,不同的Secret会返回不同的AccessToken。

    请求地址https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=id&corpsecret=secrect

    参数说明

    参数  说明
    CorpID  企业Id
    CorpSecret  权限管理组的凭证密钥

    1.3 获取CorpID和Secret

    首先得创建一个权限管理组才能获取到Secret。

    创建步骤:微信企业号控制台 → 设置 → 权限管理组 → 新建管理组

    注意事项: 这里有个【应用权限】的设置,在后面进行OAuth2.0验证时跳转的域名必须跟包含应用的【可信域名】一致。

    2. 示例代码

    正常情况下AccessToken有效期为7200秒,有效期内重复获取返回相同结果。所以创建代码时,要存储有效期内的AccessToken。

    C#代码展示为例:

    /// <summary>
    /// 微信企业号操作
    /// </summary>
    public class WXQYHHelper
    {
        private WXQYHHelper() { }
    
        static string CORPID;
        static string SECRET;
    
        /// <summary>
        /// .Ctor
        /// </summary>
        static WXQYHHelper()
        {
            CORPID = ConfigurationManager.AppSettings["CorpID"];
            SECRET = ConfigurationManager.AppSettings["Secret"];
        }
    
        /// <summary>
        /// ACCESS_TOKEN最后一次更新时间
        /// </summary>
        static DateTime _lastGetTimeOfAccessToken = DateTime.Now.AddSeconds(-7201);
    
        /// <summary>
        /// 存储微信访问凭证
        /// </summary>
        static string _AccessToken;
    
        /// <summary>
        /// 获取微信访问凭证
        /// </summary>
        public static string GetAccessToken()
        {
            try
            {
                if (_lastGetTimeOfAccessToken < DateTime.Now)
                {
    
                    string url = string.Format("https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid={0}&corpsecret={1}", CORPID, SECRET);
                    string responseText = HttpHelper.Instance.get(url); // 封装的get请求
                    /*
                        API:http://qydev.weixin.qq.com/wiki/index.php?title=%E4%B8%BB%E5%8A%A8%E8%B0%83%E7%94%A8#.E8.8E.B7.E5.8F.96AccessToken
                        正确的Json返回示例:
                        {
                           "access_token": "accesstoken000001",
                           "expires_in": 7200
                        }
                        错误的Json返回示例:
                        {
                           "errcode": 43003,
                           "errmsg": "require https"
                        }
                    */
                    var rsEntity = new { access_token = "", expires_in = 0, errcode = 0, errmsg = "" };
                    dynamic en = Newtonsoft.Json.JsonConvert.DeserializeAnonymousType<object>(responseText, rsEntity); // Newtonsoft.Json提供的匿名类反序列化
                    _lastGetTimeOfAccessToken = DateTime.Now.AddSeconds((double)en.expires_in - 1);
                    _AccessToken = en.access_token;
                }
                return _AccessToken;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
    }
    
  • 相关阅读:
    JS事件处理中心的构想
    form的novalidate属性
    AOP思想在JS中的应用
    推行浏览器升级提示,从自己做起
    doT.js模板引擎
    关于JS获取元素宽度的一点儿思考
    类似百度图片,360图片页面的布局插件
    ASCII、Unicode、UTF-8编码关系
    python字符串格式化符号及转移字符含义
    python字符串的方法介绍
  • 原文地址:https://www.cnblogs.com/polk6/p/6213725.html
Copyright © 2011-2022 走看看