根據微信公眾號開發官方文件:
取得使用者資訊步驟如下:
1 第一步:使用者同意授權,取得code
2 第二步:透過code換取網頁授權access_token
3 第三步:刷新access_token(如果需要)
4 第四步:拉取用戶資訊(需scope為snsapi_userinfo)
1 取得code
在確保微信公眾帳號擁有授權作用域(scope參數)的權限的前提下(服務號碼獲得高級介面後,預設擁有scope參數中的snsapi_base和snsapi_userinfo).
若提示“該連結無法存取”,請檢查參數是否填寫錯誤,是否擁有scope參數對應的授權作用域權限。 ,授權頁面將無法正常存取
AppID - 公眾號碼的唯一識別
REDIRECT_URI - 跳轉url
STATE - 開發者可以自訂填寫a-zA-Z0-9的參數值
2 透過code換取網頁授權access_token
grant_type - 值為authorization_code
實作程式碼:
<code class="hljs php">$code = I('get.code'); if (empty($code)) { //todo 非微信访问 exit('</code>'); }else{ //授权后操作 }
,避免造成頻繁取得
實作程式碼,以TP框架為例:<code class="hljs bash">$url = 'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=' . C('wechat.AppID') . '&secret=' . C('wechat.AppSecret'); $str = file_get_contents($url); $str = json_decode($str, true); $access_token = $str['access_token'];</code>在取得access_token後,也會一併回傳openid(使用者唯一標識),微信官方文件的解釋是:使用者唯一標識,請注意,在未關注公眾號時,使用者造訪公眾號的網頁,也會產生一個使用者和公眾號唯一的OpenID
openid是唯一標識微信使用者的,如果使用者不是第一次登陸,可以在得到openid後
查詢
資料庫是否有綁定此openid的用戶,之後就無需重新獲取用戶數據,直接獲取的資料庫user_id設定
session
4 拉取用戶資訊(需scope為snsapi_userinfo)
在資料庫無此微訊號用戶的綁定下,就相當於用戶第一次造訪登陸,則透過第四步驟來取得使用者資訊(在使用者授權情況下,網頁授權作用域為snsapi_userinfo,則此時開發者可以透過access_token和openid拉取使用者資訊了),然後後台建立user並綁定此微
信用戶(透過openid)
openid - 公用號碼唯一識別
<code class="hljs php">$access_token = S('access_token'); if (empty($access_token)) { $url = 'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=' . C('wechat.AppID') . '&secret=' . C('wechat.AppSecret'); $str = file_get_contents($url); $str = json_decode($str, true); $access_token = $str['access_token']; S('access_token', $access_token, 3600); }</code>
以上是微信公眾號之網頁授權取得的實現步驟的詳細內容。更多資訊請關注PHP中文網其他相關文章!