zoukankan      html  css  js  c++  java
  • 二、获取AccessToken

    二、获取AccessToken

    1.官方文档:

    access_token是微信官方公众号调用接口的全局唯一票据,开发者调用任何接口都需要使用access_token,由于access_token有效期为2小时,且每天只能获取2000次,这要求我们必须有效利用为数不多的调用次数且不用频繁去访问微信接口获取access_token

    1.       grant_type=client_creadential是固定的

    2.       appidsecret可以在开发者中心查看获取

    2.开发用法:

             官方文档的推荐写法,是使用一个中控服务器,所有的业务皆从中控服务器获取access_token,不应该各个业务逻辑点各自去刷新access_token,否则会产生冲突,导致服务不稳定。比如,一个业务刚拿到access_token准备调用其它接口,这时候另一个业务则刷新了access_token,这样会使原来的access_token失效,使得前者的业务调用接口失败。

             这里,我们使用全局静态变量保存access_token,存在内存中,过期后,重新获取access_token,这样保证不会频繁获取access_token,且各个业务都可以获取access_token静态变量

             代码如下:

     

    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
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    public class AcessToken
     
    {
     
        static string appID = "*x2ef9dc**********";
     
        static string appsecret = "2c*********8084a2943de*******";
     
      
     
        public static string accessToken = string.Empty;
     
        public static int expireTime = 0;
     
        public static string GetAcessToken()
     
        {
     
            //1.如果accessToken为空或者当前时间大于过期时间,则重新获取AccessToken
     
            if (string.IsNullOrEmpty(accessToken) || TimeStampUtils.ConvertDateTimeInt(DateTime.Now) > expireTime)
     
            {
     
                //1.1 获取accessToken
     
                string url = "https://api.weixin.qq.com/cgi-bin/token";
     
                string data = "grant_type=client_credential&appid=" + appID + "&secret=" + appsecret;
     
                //1.2 利用webrequest发送get请求,并接收返回的json字符串
     
                string accessObjstr = HttpUtils.HttpGet(url, data);
     
                //1.3 判断字符串中是否包含 access_token字符串,如果不包含,则返回空字符串
     
                if (accessObjstr.IndexOf("access_token") <= -1)
     
                {
     
                    return "";
     
                }
     
                //1.4 将json格式字符串反序列化为对象
     
                TokenResultObj obj = JsonConvert.DeserializeObject<TokenResultObj>(accessObjstr);
     
                //1.5 重新设置过期时间
     
                expireTime = TimeStampUtils.ConvertDateTimeInt(DateTime.Now) + obj.expires_in - 200;
     
                //1.6 将新的accss_token赋给静态变量 accessToken
     
                accessToken = obj.access_token;
     
                //1.7 返回正确的access_token
     
                return obj.access_token;
     
            }
     
            //2.如果access_token不为空且access_token未过期直接返回正确的access_token
     
            return accessToken;
     
        }
     
    }


    三、测试:

     

    1
    Response.Write(AcessToken.GetAcessToken());

     

    结果:





  • 相关阅读:
    进阶篇-用户界面:10.点九切图法在androidUI中的使用
    进阶篇-用户界面:9.android动画-布局动画
    进阶篇-用户界面:8.android动画-动画侦听和自定义动画
    20162309《程序设计与数据结构》第二学期课程总结
    规格说明书
    团队开发项目实验报告
    Dijkstra算法课后补分博客
    图的深度优先遍历课后补分博客
    图的广度优先遍历课下补分博客
    20162309《程序设计与设计结构》第四次实验报告
  • 原文地址:https://www.cnblogs.com/notniu/p/4431114.html
Copyright © 2011-2022 走看看