微信授權(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"
}