js微信授權(quán)登錄常見問題

微信授權(quán)使用的是OAuth2.0授權(quán)的方式。主要有以下步驟

1.用戶同意授權(quán),獲取code
2.通過code換取網(wǎng)頁授權(quán)的access_token
3.刷新access_token(如果需要)
4.拉取用戶信息(需scope設(shè)為 snsapi_userinfo)

請求授權(quán)頁面的路徑
'https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect'
參數(shù)說明
參數(shù)文檔

授權(quán)成功后會異步跳回我們填寫的redirect_uri路徑,然后路徑后面會拼接一個code參數(shù),這里要注意redirect_uri必需是我們在公眾號平臺授權(quán)的路徑

// 我們拼接后的授權(quán)路徑是
'https://open.weixin.qq.com/connect/oauth2/authorize?appid=wxf2d2ebedaf&redirect_uri=www.baidu.com&response_type=code&scope=snsapi_userinfo#wechat_redirect'
// 授權(quán)成功后異步跳回的路徑就是
'www.baidu.com?code=111111111'
// 如果我們填的異步跳回路徑里已經(jīng)帶了參數(shù) 例:
'redirect_uri=www.baidu.com?helf=login'
//這時候異步跳回會報(bào)錯 應(yīng)該這樣相當(dāng)于路徑內(nèi)存在了兩個? 這庫我們需要用encodeURIComponent()把回跳路徑進(jìn)行一次編碼就沒問題了
'redirect_uri=encodeURIComponent("www.baidu.com?helf=login")'

尤其注意:由于授權(quán)操作安全等級較高,所以在發(fā)起授權(quán)請求時,微信會對授權(quán)鏈接做正則強(qiáng)匹配校驗(yàn),如果鏈接的參數(shù)順序不對,授權(quán)頁面將無法正常訪問,所有操作必需是要在微信瀏覽器下才會生效!

code說明 :

code是一串隨機(jī)字符作為換取access_token的鑰匙,每次用戶授權(quán)帶上的code將不一樣,每個code只能使用一次,5分鐘未被使用自動過期

用code換取access_token:

只有獲取code的鏈接必須是在微信客戶端中點(diǎn)開的,獲取access_token和用戶信息可以直接在網(wǎng)頁打開即可。
通常到這一步就交給后臺接口去處理了,我們給后臺傳一個code由后臺進(jìn)行后面的操作然后返回我們需要的數(shù)據(jù)同時把用戶數(shù)據(jù)保存到我們的數(shù)據(jù)庫

'https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code'
參數(shù)文檔

接口訪問成功后會返回一堆參數(shù),里面的access_token和openid是我用來取用戶信息需要用的,拿到返回結(jié)果后我們再請求:

'https://api.weixin.qq.com/sns/userinfo?access_token=ACCESS_TOKEN&openid=OPENID'

就會返回當(dāng)前微信授權(quán)用戶的用戶信息,返回的數(shù)據(jù)格式如下:

{

   "openid":" 1",

   "nickname": '用戶名',

   "sex": "1",

   "province": "PROVINCE"

   "city": "CITY",

   "country": "COUNTRY",

   "headimgurl": "http://wx.qlogo.cn/mmopen/g3MonUZtNHkdmzicIlibx6iaFqAc56vxLSUfpb6n5WKSYVY0ChQKkiaJSgQ1dZuTOgvLLrhJbERQQ4eMsv84eavHiaiceqxibJxCfHe/46", 

   "privilege":[

      "PRIVILEGE1"

      "PRIVILEGE2"
   ],
   "unionid": "o6_bmasdasdsad6_2sgVt7hMZOPfL"
}

參考文章:

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容