您好,登錄后才能下訂單哦!
這篇文章主要介紹了微信公眾號之網(wǎng)頁授權(quán)獲取怎么弄,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
根據(jù)微信公眾號開發(fā)官方文檔:
獲取用戶信息步驟如下:
1 第一步:用戶同意授權(quán),獲取code
2 第二步:通過code換取網(wǎng)頁授權(quán)access_token
3 第三步:刷新access_token(如果需要)
4 第四步:拉取用戶信息(需scope為 snsapi_userinfo)
1 獲取code
在確保微信公眾賬號擁有授權(quán)作用域(scope參數(shù))的權(quán)限的前提下(服務(wù)號獲得高級http://www.php.cn/code/11829.html" target="_blank">接口后,默認擁有scope參數(shù)中的snsapi_base和snsapi_userinfo).
若提示“該鏈接無法訪問”,請檢查參數(shù)是否填寫錯誤,是否擁有scope參數(shù)對應(yīng)的授權(quán)作用域權(quán)限。
尤其注意:由于授權(quán)操作安全等級較高,所以在發(fā)起授權(quán)請求時,微信會對授權(quán)鏈接做正則強匹配校驗,如果鏈接的參數(shù)順序不對,授權(quán)頁面將無法正常訪問
其中:
AppID - 公眾號的唯一標識
REDIRECT_URI - 跳轉(zhuǎn)url
SCOPE - 值為snsapi_base(不彈出授權(quán)頁面,直接跳轉(zhuǎn),只能獲取用戶openid) 或snsapi_userinfo (彈 出授權(quán)頁面,可通過openid拿到昵稱、性別、所在地。并且,即使在未關(guān)注的情況下,只要用戶授權(quán),也能獲取其信息)
STATE - 開發(fā)者可以自定義填寫a-zA-Z0-9的參數(shù)值
2 通過code換取網(wǎng)頁授權(quán)access_token
如果用戶同意授權(quán),頁面將跳轉(zhuǎn)至 redirect_uri/?code=CODE&state=STATE。
state就是上面的STATE參數(shù)原樣傳過來的
實現(xiàn)代碼:
<code class="hljs php">$code = I('get.code'); if (empty($code)) { //todo 非微信訪問 exit('</code>'); }else{ //授權(quán)后操作 }
在這里我們就可以得到code用作后續(xù)的獲取access_token。
獲取code后,請求以下鏈接獲取access_token:
appid - 公眾號的唯一標識
secret - 密鑰
code - 上述所返回的code
grant_type - 值為authorization_code
實現(xiàn)代碼:
<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可以做緩存處理,避免造成頻繁獲取
實現(xiàn)代碼,以TP框架為例:
<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>
在獲取access_token后,也會一并返回openid(用戶唯一標識),微信官方文檔的解釋是:用戶唯一標識,請注意,在未關(guān)注公眾號時,用戶訪問公眾號的網(wǎng)頁,也會產(chǎn)生一個用戶和公眾號唯一的OpenID
openid是唯一標識微信用戶的,如果用戶不是第一次登陸,可以在得到openid后查詢數(shù)據(jù)庫是否有綁定此openid的用戶,之后就無需重新獲取用戶數(shù)據(jù),直接獲取的數(shù)據(jù)庫user_id設(shè)置session,直接登陸訪問
3 第三步忽略,只在需要的時間重新獲取access_token而已
4 拉取用戶信息(需scope為 snsapi_userinfo)
在數(shù)據(jù)庫無此微信號用戶的綁定下,就相當于用戶首次訪問登陸,則通過第四步來獲取用戶信息(在用戶授權(quán)情況下,網(wǎng)頁授權(quán)作用域為snsapi_userinfo,則此時開發(fā)者可以通過access_token和openid拉取用戶信息了),然后后臺創(chuàng)建user并綁定此微
信用戶(通過openid)
請求方法
http:GET(請使用https協(xié)議)
access_token - 上述所獲取的access_token
openid - 公眾號唯一標識
<code class="hljs php">$url="https://api.weixin.qq.com/cgi-bin/user/info?access_token=$access_token&openid=$openid&lang=zh_CN"; $str = file_get_contents($url); $str = json_decode($str, true); if (empty($str['errcode'])) { //創(chuàng)建user并綁定 openid}else{ //錯誤處理}</code>
感謝你能夠認真閱讀完這篇文章,希望小編分享的“微信公眾號之網(wǎng)頁授權(quán)獲取怎么弄”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關(guān)注億速云行業(yè)資訊頻道,更多相關(guān)知識等著你來學(xué)習(xí)!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。