天天看點

微信公衆平台開發文檔 網頁授權擷取使用者基本資訊

如果使用者在微信中(Web微信除外)通路公衆号的第三方網頁,公衆号開發者可以通過此接口擷取目前使用者基本資訊(包括昵稱、性别、城市、國家)。利用使用者資訊,可以實作體驗優化、使用者來源統計、帳号綁定、使用者身份鑒權等功能。請注意,“擷取使用者基本資訊接口是在使用者和公衆号産生消息互動時,才能根據使用者OpenID擷取使用者基本資訊,而網頁授權的方式擷取使用者基本資訊,則無需消息互動,隻是使用者進入到公衆号的網頁,就可彈出請求使用者授權的界面,使用者授權後,就可獲得其基本資訊(此過程甚至不需要使用者已經關注公衆号。)”

本接口是通過OAuth2.0來完成網頁授權的,是安全可靠的,關于OAuth2.0的詳細介紹,可以參考OAuth2.0協定标準。在微信公衆号請求使用者網頁授權之前,開發者需要先到公衆平台網站的我的服務頁中配置授權回調域名。

關于配置授權回調域名的說明:

具體而言,網頁授權流程分為三步:

引導使用者進入授權頁面同意授權,擷取code

通過code換取網頁授權access_token(與基礎支援中的access_token不同)

如果需要,開發者可以重新整理網頁授權access_token,避免過期

通過網頁授權access_token和openid擷取使用者基本資訊

<a href="http://mp.weixin.qq.com/wiki/index.php?title=%E7%BD%91%E9%A1%B5%E6%8E%88%E6%9D%83%E8%8E%B7%E5%8F%96%E7%94%A8%E6%88%B7%E5%9F%BA%E6%9C%AC%E4%BF%A1%E6%81%AF#.E7.AC.AC.E4.B8.80.E6.AD.A5.EF.BC.9A.E7.94.A8.E6.88.B7.E5.90.8C.E6.84.8F.E6.8E.88.E6.9D.83.EF.BC.8C.E8.8E.B7.E5.8F.96code">1 第一步:使用者同意授權,擷取code</a>

<a href="http://mp.weixin.qq.com/wiki/index.php?title=%E7%BD%91%E9%A1%B5%E6%8E%88%E6%9D%83%E8%8E%B7%E5%8F%96%E7%94%A8%E6%88%B7%E5%9F%BA%E6%9C%AC%E4%BF%A1%E6%81%AF#.E7.AC.AC.E4.BA.8C.E6.AD.A5.EF.BC.9A.E9.80.9A.E8.BF.87code.E6.8D.A2.E5.8F.96.E7.BD.91.E9.A1.B5.E6.8E.88.E6.9D.83access_token">2 第二步:通過code換取網頁授權access_token</a>

<a href="http://mp.weixin.qq.com/wiki/index.php?title=%E7%BD%91%E9%A1%B5%E6%8E%88%E6%9D%83%E8%8E%B7%E5%8F%96%E7%94%A8%E6%88%B7%E5%9F%BA%E6%9C%AC%E4%BF%A1%E6%81%AF#.E7.AC.AC.E4.B8.89.E6.AD.A5.EF.BC.9A.E5.88.B7.E6.96.B0access_token.EF.BC.88.E5.A6.82.E6.9E.9C.E9.9C.80.E8.A6.81.EF.BC.89">3 第三步:重新整理access_token(如果需要)</a>

<a href="http://mp.weixin.qq.com/wiki/index.php?title=%E7%BD%91%E9%A1%B5%E6%8E%88%E6%9D%83%E8%8E%B7%E5%8F%96%E7%94%A8%E6%88%B7%E5%9F%BA%E6%9C%AC%E4%BF%A1%E6%81%AF#.E7.AC.AC.E5.9B.9B.E6.AD.A5.EF.BC.9A.E6.8B.89.E5.8F.96.E7.94.A8.E6.88.B7.E4.BF.A1.E6.81.AF.28.E9.9C.80scope.E4.B8.BA_snsapi_userinfo.29">4 第四步:拉取使用者資訊(需scope為 snsapi_userinfo)</a>

在確定微信公衆賬号擁有授權作用域(scope參數)的權限的前提下(服務号獲得進階接口後,預設帶有scope參數中的snsapi_base和snsapi_userinfo),引導關注者打開如下頁面:

參數說明

參數

是否必須

說明

appid

公衆号的唯一辨別

redirect_uri

授權後重定向的回調連結位址

response_type

傳回類型,請填寫code

scope

應用授權作用域,snsapi_base (不彈出授權頁面,直接跳轉,隻能擷取使用者openid),snsapi_userinfo (彈出授權頁面,可通過openid拿到昵稱、性别、所在地。并且,即使在未關注的情況下,隻要使用者授權,也能擷取其資訊)

state

重定向後會帶上state參數,開發者可以填寫任意參數值

#wechat_redirect

直接在微信打開連結,可以不填此參數。做頁面302重定向時候,必須帶此參數

下圖為scope等于snsapi_userinfo時的授權頁面:

<a href="http://mp.weixin.qq.com/wiki/index.php?title=%E6%96%87%E4%BB%B6:%E7%BD%91%E9%A1%B5%E6%8E%88%E6%9D%83.png"></a>

使用者同意授權後

如果使用者同意授權,頁面将跳轉至 redirect_uri/?code=CODE&amp;state=STATE。若使用者禁止授權,則重定向後不會帶上code參數,僅會帶上state參數redirect_uri?state=STATE

首先請注意,這裡通過code換取的網頁授權access_token,與基礎支援中的access_token不同。公衆号可通過下述接口來擷取網頁授權access_token。如果網頁授權的作用域為snsapi_base,則本步驟中擷取到網頁授權access_token的同時,也擷取到了openid,snsapi_base式的網頁授權流程即到此為止。

請求方法

secret

公衆号的appsecret

code

填寫第一步擷取的code參數

grant_type

填寫為authorization_code

傳回說明

正确時傳回的JSON資料包如下:

描述

access_token

網頁授權接口調用憑證,注意:此access_token與基礎支援的access_token不同

expires_in

access_token接口調用憑證逾時時間,機關(秒)

refresh_token

使用者重新整理access_token

openid

使用者唯一辨別,請注意,在未關注公衆号時,使用者通路公衆号的網頁,也會産生一個使用者和公衆号唯一的OpenID

使用者授權的作用域,使用逗号(,)分隔

錯誤時微信會傳回JSON資料包如下(示例為Code無效錯誤):

<a href="http://mp.weixin.qq.com/wiki/index.php?title=%E5%85%A8%E5%B1%80%E8%BF%94%E5%9B%9E%E7%A0%81%E8%AF%B4%E6%98%8E" target="_blank">全局傳回碼說明</a>

由于access_token擁有較短的有效期,當access_token逾時後,可以使用refresh_token進行重新整理,refresh_token擁有較長的有效期(7天、30天、60天、90天),當refresh_token失效的後,需要使用者重新授權。

填寫為refresh_token

填寫通過access_token擷取到的refresh_token參數

使用者唯一辨別

如果網頁授權作用域為snsapi_userinfo,則此時開發者可以通過access_token和openid拉取使用者資訊了。

使用者的唯一辨別

nickname

使用者昵稱

sex

使用者的性别,值為1時是男性,值為2時是女性,值為0時是未知

province

使用者個人資料填寫的省份

city

普通使用者個人資料填寫的城市

country

國家,如中國為CN

headimgurl

使用者頭像,最後一個數值代表正方形頭像大小(有0、46、64、96、132數值可選,0代表640*640正方形頭像),使用者沒有頭像時該項為空

privilege

使用者特權資訊,json 數組,如微信沃卡使用者為(chinaunicom)

錯誤時微信會傳回JSON資料包如下(示例為openid無效):

微信公衆平台開發文檔 網頁授權擷取使用者基本資訊