用戶在微信客戶端中訪問第三方網頁,公衆號能夠經過微信網頁受權機制,來獲取用戶基本信息,進而實現業務邏輯。html
在微信公衆號請求用戶網頁受權以前,開發者須要先到公衆平臺官網中的「開發 - 接口權限 - 網頁服務 - 網頁賬號 - 網頁受權獲取用戶基本信息」的配置選項中,修改受權回調域名。請注意,這裏填寫的是域名(是一個字符串),而不是URL,所以請勿加 http:// 等協議頭;json
受權回調域名配置規範爲全域名,好比須要網頁受權的域名爲:www.qq.com,配置之後此域名下面的頁面http://www.qq.com/music.html 、 http://www.qq.com/login.html 均可以進行OAuth2.0鑑權。但http://pay.qq.com 、 http://music.qq.com 、 http://qq.com沒法進行OAuth2.0鑑權api
微信提供了兩種受權方式來應對不一樣的使用場景。經過網頁受權做用域 scope
參數控制。微信
openid
,沒法得到用戶的其餘信息。scope: snsapi_base
scope: snsapi_userinfo
,也是靜默受權,用戶無感知。scope: snsapi_userinfo
code
code
換取網頁受權 access_token
和 openid
,靜默受權到這步結束access_token
獲取用戶信息引導用戶跳傳至該連接app
https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE
url
用戶贊成受權或靜默受權後將跳轉至 redirect_url?code=CODE&state=STATE
這個地址並帶上生成的 code
。code
code
做爲換取access_token
的票據,只能使用一次,5分鐘未使用自動過時。htm
參數說明blog
code
換取網頁受權 access_token
注意,這裏的 access_token
和 調用公衆平臺API所需的基礎 access_token
不是一個東東,只是名字同樣而已。token
這一步是在服務端完成的,須要公衆號的 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" }