用戶在微信客戶端中訪問第三方網頁,公衆號能夠經過微信網頁受權機制,來獲取用戶基本信息,進而實現業務邏輯。html
在微信公衆號請求用戶網頁受權以前,開發者須要先到公衆平臺官網中的「開發 - 接口權限 - 網頁服務 - 網頁賬號 - 網頁受權獲取用戶基本信息」的配置選項中,修改受權回調域名。請注意,這裏填寫的是域名(是一個字符串),而不是URL,所以請勿加 http:// 等協議頭;json
受權回調域名配置規範爲全域名,好比須要網頁受權的域名爲:www.qq.com,配置之後此域名下面的頁面www.qq.com/music.html 、 www.qq.com/login.html 均可以進行OAuth2.0鑑權。但pay.qq.com 、 music.qq.com 、 qq.com沒法進行OAuth2.0鑑權api
微信提供了兩種受權方式來應對不一樣的使用場景。經過網頁受權做用域 scope
參數控制。bash
openid
,沒法得到用戶的其餘信息。scope: snsapi_base
scope: snsapi_userinfo
,也是靜默受權,用戶無感知。scope: snsapi_userinfo
code
code
換取網頁受權 access_token
和 openid
,靜默受權到這步結束access_token
獲取用戶信息引導用戶跳傳至該連接微信
https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE
app
用戶贊成受權或靜默受權後將跳轉至 redirect_url?code=CODE&state=STATE
這個地址並帶上生成的 code
。url
code
做爲換取access_token
的票據,只能使用一次,5分鐘未使用自動過時。spa
參數說明3d
code
換取網頁受權 access_token
注意,這裏的 access_token
和 調用公衆平臺API所需的基礎 access_token
不是一個東東,只是名字同樣而已。code
這一步是在服務端完成的,須要公衆號的 secret
,access_token
也不能夠傳給客戶端。
請求接口
https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code
返回
{
"access_token":"ACCESS_TOKEN",
"expires_in":7200,
"refresh_token":"REFRESH_TOKEN",
"openid":"OPENID",
"scope":"SCOPE"
}
複製代碼
當網頁受權做用域爲 snsapi_userinfo
時,開發者經過 access_token
和 openid
獲取用戶信息。
請求接口
https://api.weixin.qq.com/sns/userinfo?access_token=ACCESS_TOKEN&openid=OPENID&lang=zh_CN
返回
{
"openid": "OPENID",
"nickname": "NICKNAME",
"sex": "1",
"province": "PROVINCE"
"city": "CITY",
"country": "COUNTRY",
"headimgurl": "http://thirdwx.qlogo.cn/mmopen/g3MonUZtNHkdmzicIlibx6iaFqAc56vxLSUfpb6n5WKSYVY0ChQKkiaJSgQ1dZuTOgvLLrhJbERQQ4eMsv84eavHiaiceqxibJxCfHe/46",
"privilege": [ "PRIVILEGE1" "PRIVILEGE2" ],
"unionid": "o6_bmasdasdsad6_2sgVt7hMZOPfL"
}
複製代碼