本文介紹如何獲得微信公眾平台關注用戶的基本訊息,包括暱稱、頭像、性別、國家、省份、城市、語言。
本文的方法將囊括訂閱號和服務號以及自訂選單各種場景,無論是否有高級介面權限,都有辦法來獲得用戶基本信息,而無需模擬登入。
在本文中,特別要注意的是有兩個不同的Access Token,他們產生的方式不一樣,一種是使用AppID和AppSecret取得的access_token,一種是OAuth2.0授權中產生的access_token,方倍工作室分別稱為全域Access Token和授權Access Token。
一、透過全域Access Token取得使用者基本資訊
使用者追蹤、回覆訊息的時候,皆可獲得使用者的OpenID
<xml> <ToUserName><![CDATA[gh_b629c48b653e]]></ToUserName> <FromUserName><![CDATA[ollB4jv7LA3tydjviJp5V9qTU_kA]]></FromUserName> <CreateTime>1372307736</CreateTime> <MsgType><![CDATA[event]]></MsgType> <Event><![CDATA[subscribe]]></Event> <EventKey><![CDATA[]]></EventKey></xml>
其中的FromUserName就是OpenID
然後使用access_token接口,請求獲得全域Access Token
##返回結果:{ "access_token": "NU7Kr6v9L9TQaqm5NE3OTPctTZx797Wxw4Snd2WL2HHBqLCiXlDVOw2l-Se0I-WmOLLniAYLAwzhbYhXNjbLc_KAA092cxkmpj5FpuqNO0IL7bB0Exz5s5qC9Umypy-rz2y441W9qgfnmNtIZWSjSQ", "expires_in": 7200 }再使用全域ACCESS_TOKEN取得OpenID的詳細資料傳回如下:
{ "subscribe": 1, "openid": "oLVPpjqs2BhvzwPj5A-vTYAX4GLc", "nickname": "刺猬宝宝", "sex": 1, "language": "zh_CN", "city": "深圳", "province": "广东", "country": "中国", "headimgurl": "http://wx.qlogo.cn/mmopen/JcDicrZBlREhnNXZRudod9PmibRkIs5K2f1tUQ7lFjC63pYHaXGxNDgMzjGDEuvzYZbFOqtUXaxSdoZG6iane5ko9H30krIbzGv/0", "subscribe_time": 1386160805 }至此,取得使用者的基本資料。 這種方式最適合用戶在關注的時候,回覆一則歡迎追蹤+用戶暱稱的訊息,如關注下面公眾帳號時的回覆所示。掃描二維碼可體驗。
#二、透過OAuth2.0方式彈出授權頁面取得用戶基本資訊
1. 首先配置回調網域 將該連結回覆給關注用戶,用戶點擊後,彈出應用授權介面 回呼頁面得到連結如下,回呼url中將包含參數code再使用code換取oauth2的授權access_token# url如下:獲得授權Access Token:{ "access_token": "OezXcEiiBSKSxW0eoylIeAsR0GmYd1awCffdHgb4fhS_KKf2CotGj2cBNUKQQvj-G0ZWEE5-uBjBz941EOPqDQy5sS_GCs2z40dnvU99Y5AI1bw2uqN--2jXoBLIM5d6L9RImvm8Vg8cBAiLpWA8Vw", "expires_in": 7200, "refresh_token": "OezXcEiiBSKSxW0eoylIeAsR0GmYd1awCffdHgb4fhS_KKf2CotGj2cBNUKQQvj-G0ZWEE5-uBjBz941EOPqDQy5sS_GCs2z40dnvU99Y5CZPAwZksiuz_6x_TfkLoXLU7kdKM2232WDXB3Msuzq1A", "openid": "oLVPpjqs9BhvzwPj5A-vTYAX3GLc", "scope": "snsapi_userinfo," }再使用授權Access Token獲取用戶資訊返回如下
{ "openid": "oLVPpjqs9BhvzwPj5A-vTYAX3GLc", "nickname": "刺猬宝宝", "sex": 1, "language": "zh_CN", "city": "深圳", "province": "广东", "country": "中国", "headimgurl": "http://wx.qlogo.cn/mmopen/utpKYf69VAbCRDRlbUsPsdQN38DoibCkrU6SAMCSNx558eTaLVM8PyM6jlEGzOrH67hyZibIZPXu4BK1XNWzSXB3Cs4qpBBg18/0", "privilege": [] }獲取用戶信息完成。 最終得到用戶資訊如下所示 此方法詳細流程可參考
微信公眾平台開發(71) OAuth2.0網頁授權
這種方法適合,1. 在朋友圈中獲得使用者的資訊.2. 在網頁中獲得用戶資訊。 3. 在自訂選單中取得使用者資訊。 需要說明的是,如果在已經有OAuth2.0網頁授權權限的服務號碼中用這種方法,會自動轉換成方法三中的那樣,沒有「微信登入」提示框出來。 可以微信掃描下面的二維碼,然後回覆「授權」體驗這樣的取得方式。#三、透過OAuth2.0方式不彈出授權頁面取得使用者基本資訊
返回如下{ "access_token": "OezXcEiiBSKSxW0eoylIeAsR0GmYd1awCffdHgb4fhS_KKf2CotGj2cBNUKQQvj-oJ9VmO-0Z-_izfnSAX_s0aqDsYkW4s8W5dLZ4iyNj5Y6vey3dgDtFki5C8r6D0E6mSVxxtb8BjLMhb-mCyT_Yg", "expires_in": 7200, "refresh_token": "OezXcEiiBSKSxW0eoylIeAsR0GmYd1awCffdHgb4fhS_KKf2CotGj2cBNUKQQvj-oJ9VmO-0Z-_izfnSAX_s0aqDsYkW4s8W5dLZ4iyNj5YBkF0ZUH1Ew8Iqea6x_itq13sYDqP1D7ieaDy9u2AHHw", "openid": "oLVPpjqs9BhvzwPj5A-vTYAX3GLc", "scope": "snsapi_base" }傳回結果:
{ "access_token": "NU7Kr6v9L9TQaqm5NE3OTPctTZx797Wxw4Snd2WL2HHBqLCiXlDVOw2l-Se0I-WmOLLniAYLAwzhbYhXNjbLc_KAA092cxkmpj5FpuqNO0IL7bB0Exz5s5qC9Umypy-rz2y441W9qgfnmNtIZWSjSQ", "expires_in": 7200 }傳回如下:
{ "subscribe": 1, "openid": "oLVPpjqs2BhvzwPj5A-vTYAX4GLc", "nickname": "刺猬宝宝", "sex": 1, "language": "zh_CN", "city": "深圳", "province": "广东", "country": "中国", "headimgurl": "http://wx.qlogo.cn/mmopen/JcDicrZBlREhnNXZRudod9PmibRkIs5K2f1tUQ7lFjC63pYHaXGxNDgMzjGDEuvzYZbFOqtUXaxSdoZG6iane5ko9H30krIbzGv/0", "subscribe_time": 1386160805 }成功取得使用者基本資訊。 這種適合已經有OAuth2.0網頁授權的服務號碼在網頁中使用,且不會彈出「微信登入」頁面。減少給用戶的打擾。
四、使用哪一種方法最適合
##
1. 服務號碼
有進階介面權限: 訊息回覆中三種都可以自訂選單中使用方法三 (招商銀行信用卡中心使用方法三,康盛微社群使用方法二)
沒有高階介面權限: 訊息回覆中使用方法二自訂選單中使用方法二 (沒有進階權限需要藉用別人的Appid和AppSecret)
2. 訂閱號碼
已認證有取得使用者資訊權限 自訂選單中使用方法二 (沒有進階權限需要藉用別人的Appid和AppSecret)
未認證沒有取得使用者資訊權限 訊息回復中使用方法二自訂選單中暫無方法 (沒有進階權限需要藉用別人的Appid和AppSecret,方倍工作室使用的就是這種
以上是開發微信公眾平台獲取用戶基本訊息的詳細內容。更多資訊請關注PHP中文網其他相關文章!