国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 熱點 > 微信 > 正文

詳解微信開發(fā)者文檔 access_token管理

2020-03-22 17:37:18
字體:
供稿:網(wǎng)友
  • 寫在前面的話:前幾篇博客詳細(xì)講解了如何獲取用戶發(fā)送的消息并進(jìn)行回復(fù),這里的回復(fù)是一種被動的回復(fù),而被動回復(fù)的方式便是通過echo返回信息給微信服務(wù)器的POST請求,因此,其實我們并沒有算的上調(diào)用了微信的接口,從這一篇文章開始,才算是真正的調(diào)用微信接口開端,就從access_token講起。

    ======正文開始========

      每時每刻都有許多用戶來調(diào)用微信接口,那么我們想要請求微信接口,如何知道是哪一個用戶來請求的呢?也就是說需要一個唯一的憑證來唯一的標(biāo)明一個公眾號,這個信息便是APPID和APPSECRET。這個信息可以在微信公眾號后臺讀取到,其中APPID直接能夠看到,而如果想要看到APPSECRET,需要管理員的手機掃描二維碼才能夠看到。這兩個信息唯一的表明了一個公眾號,由此也可見,這兩個信息對于一個微信公眾號來說,是非常敏感的信息。對于每次微信接口的調(diào)用,我們本可以使用APPID和APPSECRET,但是正因為它的敏感性,我們并沒有直接通過它,而是通過一個叫做access_token的信息來調(diào)用微信接口,而access_token則是通過APPID和APPSECRET來獲取的。下面詳細(xì)講解一下access_token管理的一些內(nèi)容。

    一、獲取access_token

      獲取access_token方法很簡單,只需要向如下接口發(fā)送GET請求即可

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

      其中APPID和APPSECRET填寫自己公眾號的相應(yīng)內(nèi)容即可,當(dāng)向微信服務(wù)器發(fā)送完成GET請求后,微信服務(wù)器會給回復(fù),回復(fù)內(nèi)容的格式為json格式(注意,不是xml格式),內(nèi)容如下:

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

      其中access_token一項就是我們所需要的值了,通過過這個值就能夠去調(diào)用其他微信接口了;

        expires_in是過期時間,一般為2個小時,所以說我們獲取到的access_token并不是永久有效的,而是僅僅有2個小時的有效期,當(dāng)然了,這個內(nèi)容以后微信可能還會調(diào)整。關(guān)于這一項注意重點強調(diào)一下:你可能會問,為什么要考慮它的有效期呢?每次我都重新調(diào)用GET請求獲取access_token不就行了?答案是不可以的,有以下幾個原因:

     ?。?)每次獲取到的access_token值是不一樣的,這樣就有可能導(dǎo)致影響業(yè)務(wù)

      (2)最主要的一點:微信對于調(diào)用access_token獲取接口是有次數(shù)限制的。

      至于如何管理access_token,在第二部分講解。

      前面是正常情況下,當(dāng)GET請求失敗的話,返回的信息如下:

    {'errcode':40013,'errmsg':'invalid appid'}

      我們從中無法獲取到access_token,而通過具體的errmsg可以判斷錯誤的原因為:appid填寫的錯誤。

    二、通過中繼服務(wù)器獲取access_token

      雖然通過第一步我們已經(jīng)獲取到了access_token,但是每次使用access_token的時候,并不能通過調(diào)用接口的方式進(jìn)行獲取,原因前面講了,具體實施的話,可以通過一個中繼服務(wù)器,定時去獲取access_token,而我們的業(yè)務(wù)邏輯所需要的access_token,是從中繼服務(wù)器中獲取,而不是每次都請求微信接口獲取。

    三、源碼示例講解

      下面通過代碼實例進(jìn)行講解,之前我們的代碼都是寫在wechat.php之中,下面我們建立一個新的文件進(jìn)行演示,叫做geAccessToken.php。

    1、設(shè)置access_token請求參數(shù):

        $appid='wx85871939f72432432';    $secret='4026e323bfcb11ed35ea41a92ffsfdsgdsge';    $url='http://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid='.$appid.'&secret='.$secret;     

      這里的appid和secret填寫自己的信息。

    2、通過curl獲取json數(shù)據(jù)

        $ch=curl_init();      curl_setopt($ch, CURLOPT_URL,$url);      curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);      curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);      curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);      $result=curl_exec($ch);      curl_close($ch);     $data=json_decode($result,true); 

      其中result中保存的就是GET請求收到的json數(shù)據(jù),通過json_decode將json數(shù)據(jù)轉(zhuǎn)化為數(shù)組;注意:需要在php中開啟curl.

    3、取得access_token數(shù)據(jù)

    var_dump($data['access_token']);

      這里直接打印的access_token值。

    4.中繼服務(wù)器設(shè)置  

      通過前面代碼就能夠獲取access_token了,實際項目中,可以將獲取的access_token插入數(shù)據(jù)庫表中,而獲取的方法可以通過cron每隔1個小時獲取一次。

      實際業(yè)務(wù)中,需要access_token就可以直接從數(shù)據(jù)庫表中讀取了,這里就不貼代碼了。

      至此,access_token管理的方法就講完了。

    (完)

    附源代碼:

    <?php    $appid='wx85871939f7f9b647';    $secret='4026e323bfcb11ed35ea41a924bc36f6';    $url='http://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid='.$appid.'&secret='.$secret;         $ch=curl_init();      curl_setopt($ch, CURLOPT_URL,$url);      curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);      curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);      curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);      $result=curl_exec($ch);      curl_close($ch);     $data=json_decode($result,true);          var_dump($data['access_token']);?>

      

    PHP編程

    鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。

  • 發(fā)表評論 共有條評論
    用戶名: 密碼:
    驗證碼: 匿名發(fā)表
    主站蜘蛛池模板: 大埔县| 永修县| 福鼎市| 沧州市| 蓬莱市| 乐昌市| 石台县| 阿拉善左旗| 建水县| 大田县| 雷山县| 浮梁县| 墨玉县| 洮南市| 开封市| 泸定县| 榆树市| 五常市| 安阳市| 黑龙江省| 阿拉善左旗| 内江市| 平果县| 济源市| 崇仁县| 嘉兴市| 天气| 武穴市| 同江市| 连州市| 紫云| 长泰县| 岑溪市| 禄劝| 鄂尔多斯市| 廉江市| 朝阳市| 乌拉特中旗| 庆阳市| 博罗县| 孟津县|