微信公眾號開發(二)獲取AccessToken、jsapi_ticket


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
}

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM