苏飞论坛

标题: Asp.net【企业微信开发】(八)获取用的AccessToken - get_suite_token [打印本页]

作者: 范范    时间: 2021-7-9 16:32
标题: Asp.net【企业微信开发】(八)获取用的AccessToken - get_suite_token


在企业微信应用中,获取accesstoken中有好几个token, 本次我们主要说下获取用户的AccessToken的方法, 即 get_suite_token

具体实现方法如下:
[C#] 纯文本查看 复制代码

// 用suite_ticket 获取suite_access_token
                    var url = "https://qyapi.weixin.qq.com/cgi-bin/service/get_suite_token";
                    var body = "{\"suite_id\":\"" + WXConfig.SuiteID + "\",\"suite_secret\":\"" + WXConfig.Secret + "\",\"suite_ticket\":\"" + objcache.suite_ticket + "\"}";

                    //LogHelper.WriteLog(body);
                    var html = ShouQuan.InfoPost(url, body);

                    //LogHelper.WriteLog(html);
                    var info = JsonConvert.DeserializeObject<suite_access_token_info>(html);
                    if (!string.IsNullOrEmpty(info.suite_access_token))
                    {
                        // 存储suite_ticket
                        int result = cachebll.Update(DictBuilder.Assign("suite_access_token", info.suite_access_token).Assign("suite_access_token_update", DateTime.Now), $" suite_id='{WXConfig.SuiteID}'", null);
                        if (result > 0)
                        {
                            //LogHelper.WriteLog($"suite_access_token:{info.suite_access_token} 写入数据库成功");
                        }
                        else
                        {
                            //LogHelper.WriteLog($"suite_access_token:{info.suite_access_token} 写入数据库失败");
                        }
                        // 保存suite_access_token
                        return info.suite_access_token;
                    }


[C#] 纯文本查看 复制代码

/// <summary>
        /// post请求代码
        /// </summary>
        /// <param name="url"></param>
        /// <param name="body"></param>
        /// <returns></returns>
        public static string InfoPost(string url, string body)
        {
            HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(new Uri(url));
            request.Timeout = 30000;//30秒
            request.Method = "POST";
            byte[] payload = System.Text.Encoding.UTF8.GetBytes(body);
            Stream writer = request.GetRequestStream();
            writer.Write(payload, 0, payload.Length);
            writer.Close();
            HttpWebResponse response = (HttpWebResponse)request.GetResponse();
            StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.GetEncoding("utf-8"));
            var result = reader.ReadToEnd();
            return result;
        }


从上栗中可以看到, 获取的suite_access_token是有时效性的, 我们可以存储到数据库中,在失效前再次获取即可, 避免请求频繁

作者: xyc    时间: 2021-7-9 18:08
支持支持




欢迎光临 苏飞论坛 (http://www.sufeinet.com/) Powered by Discuz! X3.4