首頁  >  文章  >  微信小程式  >  微信公眾號-取得使用者資訊(網頁授權取得)實現步驟

微信公眾號-取得使用者資訊(網頁授權取得)實現步驟

伊谢尔伦
伊谢尔伦原創
2016-11-21 15:49:393071瀏覽

根據微信公眾號開發官方文件:

獲取使用者資訊步驟如下:

1 第一步:使用者同意授權,取得code
2 第二步:透過code換取網頁授權access_token
3 第三步:刷新access_token(如果需要)
4 第四步:拉取用戶資訊(需scope為snsapi_userinfo)

1 取得code

在確保微信公眾帳號擁有授權作用域(scope參數)的取得code

在確保微信公眾帳號擁有授權作用域(scope參數)的權限的前提下(服務號碼取得進階介面後,預設擁有scope參數中的snsapi_base和snsapi_userinfo),引導追蹤者開啟下列頁面:


https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRsco_UM; =SCOPE&state=STATE#wechat_redirect


若提示“該連結無法存取”,請檢查參數是否填寫錯誤,是否擁有scope參數對應的授權作用域權限。

尤其註意:由於授權操作安全等級較高,所以在發起授權請求時,微信會對授權連結做正規強匹配校驗,如果連結的參數順序不對,授權頁面將無法正常存取

其中:



AppID - 公眾號碼的唯一識別
REDIRECT_URI - 跳轉url

SCOPE - 值為snsapi_base(不彈出授權頁面,直接跳轉,只能取得使用者openid) 或snsapi_userinfo (彈出授權頁面,可透過openidid6暱稱、性別、所在地。換取網頁授權access_token

如果使用者同意授權,頁面將跳到redirect_uri/?code=CODE&state=STATE。

state就是上面的STATE參數原樣傳過來的

實現代碼:

   

<code class="hljs php">$code = I(&#39;get.code&#39;);
if (empty($code)) {
   //todo 非微信访问
   exit(&#39;</code>&#39;);
 }else{ //授权后操作 }

    

在這裡我們可以得到code作為後續的取得access_token。

取得code後,請要求以下連結取得access_token:

 https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SEqT&code=CODE&grant__Lun識別

secret - 密鑰

code - 上述所回傳的code

grant_type - 值為authorization_code

實作程式碼:

<code class="hljs bash">$url = &#39;https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=&#39; . C(&#39;wechat.AppID&#39;) . &#39;&secret=&#39; . C(&#39;wechat.AppSecret&#39;);
$str = file_get_contents($url);
$str = json_decode($str, true);
$access_token = $str[&#39;access_token&#39;];</code>

這裡access_token可以做快取
<code class="hljs php">$access_token = S(&#39;access_token&#39;);
if (empty($access_token)) {
  $url = &#39;https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=&#39; . C(&#39;wechat.AppID&#39;) . &#39;&secret=&#39; . C(&#39;wechat.AppSecret&#39;);
  $str = file_get_contents($url);
  $str = json_decode($str, true);
  $access_token = $str[&#39;access_token&#39;];
  S(&#39;access_token&#39;, $access_token, 3600);
}</code>

在獲取access_token後,也會一併返回openid(用戶唯一標識),微信官方文檔的解釋是:用戶唯一標識,請注意,在未關注公眾號時,用戶訪問公眾號的網頁,也會產生一個用戶和公眾號唯一的OpenID


openid是唯一標識微信用戶的,如果用戶不是第一次登陸,可以在得到openid後查詢數據庫是否有綁定此openid的用戶,之後就無需重新獲取用戶數據,直接取得的資料庫user_id設定session,直接登陸存取

3 第三步忽略,只在需要的時間重新取得access_token而已

4 拉取用戶資訊(scope為snsapi_userinfo)

在資料庫無此微訊號(用戶的綁定下,就相當於用戶首次訪問登陸,則透過第四步來獲取用戶資訊(在用戶授權情況下,網頁授權作用域為snsapi_userinfo,則此時開發者可以透過access_token和openid拉取用戶資訊了),然後後台建立user並綁定此微

信用戶(透過openid)

請求方法


http:GET(請使用https協定) https://api.weixin.qq.com/ sns/userinfo?access_token=ACCESS_TOKEN&openid=OPENID&lang=zh_CN

access_token - 上述所取得的access_token
openid - 公眾號碼唯一識別

號的資訊:。

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn