码迷,mamicode.com
首页 > 微信 > 详细

微信公众号开发(二)获取AccessToken、jsapi_ticket

时间:2018-07-16 19:38:04      阅读:378      评论:0      收藏:0      [点我收藏+]

标签:odi   开发   exp   url   com   公众   使用   微信公众号开发   spl   

Access Token

在微信公众平台接口开发中,Access Token占据了一个很重要的地位,相当于进入各种接口的钥匙,拿到这个钥匙才有调用其他各种特殊接口的权限。 
access_token是公众号的全局唯一票据,公众号调用各接口时都需使用access_token。正常情况下access_token有效期为7200秒,重复获取将导致上次获取的access_token失效。 
公众号可以使用AppID和AppSecret调用本接口来获取access_token。AppID和AppSecret可在开发模式中获得(需要已经成为开发者,且帐号没有异常状态)。注意调用所有微信接口时均需使用https协议。

http请求方式: GET

https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET

C#.NET代码如下:

/// <summary>
/// 获取AccessToken
/// </summary>
/// <returns></returns>
public static string getAccessToken()
{
    string url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=" + AppID + "&secret=" + AppSecret;

    HttpWebRequest webrequest = (HttpWebRequest)System.Net.HttpWebRequest.Create(url);
    HttpWebResponse webresponse = (HttpWebResponse)webrequest.GetResponse();//请求连接,并反回数据
    Stream stream = webresponse.GetResponseStream();//把返回数据转换成流文件

    byte[] rsByte = new Byte[webresponse.ContentLength];  //把流文件转换为字节数组

    try
    {
        stream.Read(rsByte, 0, (int)webresponse.ContentLength);
        string responseStr = System.Text.Encoding.Default.GetString(rsByte, 0, rsByte.Length).ToString().Replace("{", "").Replace("}", "");
        string[] jsons = responseStr.Split(‘,‘);
        if (jsons.Length == 2)
        {
            string[] param = jsons[0].Split(‘:‘);
            if (param.Length == 2 && param[0] == "\"access_token\"")
            {
                string tempAccessToken = param[1].Replace("\"", "");

                return tempAccessToken ;
            }
            else
            {
                return "error";
            }
        }
        return "error";
    }
    catch
    {
        return "error";
    }
}

  

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

{"access_token":"ACCESS_TOKEN","expires_in":7200}

  

jsapi_ticket

jsapi_ticket是公众号用于调用微信JS接口的临时票据。正常情况下,jsapi_ticket的有效期为7200秒,通过access_token来获取。由于获取jsapi_ticket的api调用次数非常有限,频繁刷新jsapi_ticket会导致api调用受限,影响自身业务,开发者必须在自己的服务全局缓存jsapi_ticket 。

http请求方式: GET

https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=ACCESS_TOKEN&type=jsapi

C#.NET代码如下:

private static string getJsapiTicket()
{
    string interfaceUrl = "https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=" + AccessToken + "&type=jsapi";

    HttpWebRequest webrequest = (HttpWebRequest)System.Net.HttpWebRequest.Create(interfaceUrl);
    HttpWebResponse webresponse = (HttpWebResponse)webrequest.GetResponse();//请求连接,并反回数据
    Stream stream = webresponse.GetResponseStream();//把返回数据转换成流文件
    byte[] rsByte = new Byte[webresponse.ContentLength];  //把流文件转换为字节数组

    try
    {
        stream.Read(rsByte, 0, (int)webresponse.ContentLength);
        string strb = System.Text.Encoding.Default.GetString(rsByte, 0, rsByte.Length).ToString().Replace("{", "").Replace("}", "");

        if ((strb.ToString().IndexOf("\"errcode\":42001") != -1) || (strb.ToString().IndexOf("\"errcode\":40001") != -1) || (strb.ToString().IndexOf("\"errcode\":40014") != -1) || (strb.ToString().IndexOf("\"errcode\":41001") != -1)) 
        {
            //access_token错误
        }
        else if (strb.ToString().IndexOf("\"errcode\":0,\"errmsg\":\"ok\"") != -1)
        {
            string[] jsons = strb.Split(‘,‘);
            if (jsons.Length == 4)
            {
                string[] param = jsons[2].Split(‘:‘);
                if (param.Length == 2 && param[0] == "\"ticket\"")
                {
                    string tempJsapiTicket = param[1].Replace("\"", "");

                    return tempJsapiTicket ;
                }
                else
                {
                    return "error";
                }
            }
            return "error";
        }
        else
        {
            return "error";
        }
    }
    catch 
    {
        return "error";
    }
}

  成功返回如下JSON:

{
"errcode":0,
"errmsg":"ok",
"ticket":"bxLdikRXVbTPdHSM05e5u5sUoXNKd8-41ZO3MhKoyN5OfkWITDGgnr2fwJ0m9E8NYzWKVZvdVtaUgWvsdshFKA",
"expires_in":7200
}

  

微信公众号开发(二)获取AccessToken、jsapi_ticket

标签:odi   开发   exp   url   com   公众   使用   微信公众号开发   spl   

原文地址:https://www.cnblogs.com/yachao1120/p/9319104.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!