微信公衆平臺開發-用戶管理中經常使用接口調用實例及解析(含源碼)
做者: 孟祥磊-《微信公衆平臺開發實例教程》php
掌握用戶的第一步就是將已經關注的粉絲信息保存起來,這個時候就用到獲取用戶列表接口。公衆號可經過本接口來獲取賬號的關注者列表,關注者列表由一串OpenID(加密後的微信號,每一個用戶對每一個公衆號的OpenID是惟一的)組成。一次拉取調用最多拉取10000個關注者的OpenID,能夠經過屢次拉取的方式來知足需求。html
1、 獲取微信關注用戶列表接口調用實例mysql
接口說明sql
http請求方式:GET數據庫
接口調用地址:json
https://api.weixin.qq.com/cgi-bin/user/get?access_token=ACCESS_TOKEN&next_openid=NEXT_OPENIDapi
請求參數說明,如表所示:服務器
參數微信 |
是否必須app |
說明 |
access_token |
是 |
調用接口憑證 |
next_openid |
是 |
第一個拉取的OPENID,不填默認從頭開始拉取 |
返回說明:
正常狀況下,微信會返回JSON數據包給公衆號,以下所示:
{"total":2,"count":2,"data":{"openid":["","OPENID1","OPENID2"]},"next_openid":"NEXT_OPENID"}
返回信息參數說明,如表所示:
參數 |
說明 |
total |
關注該公衆帳號的總用戶數 |
count |
拉取的OPENID個數,最大值爲10000 |
data |
列表數據,OPENID的列表 |
next_openid |
拉取列表的最後一個用戶的OPENID |
使用程序調用接口獲取,代碼:
<?php /* *獲取微信關注用戶列表OpenID */ require('wei_function.php'); $appid="wx78478e595939c538"; $secret="5540e8ccab4f71dfad752f73cfb85780"; $url="https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=".$appid."&secret=".$secret.""; $output=getdata($url); $tokenarr=(array)json_decode($output); $token=$tokenarr['access_token']; //獲取關注用戶列表接口 $userurl="https://api.weixin.qq.com/cgi-bin/user/get?access_token=".$token.""; //經過getdata進行接口調用 $userarr=(array)json_decode(getdata($userurl)); //將返回信息進行處理並輸出 $useropenidarr=(array)$userarr['data']; print_r($useropenidarr); ?>
代碼解析
require('wei_function.php');包含wei_function.php,該函數文件能夠購買《微信公衆平臺開發實例教程》,在該書中第95頁有詳細講解。
與微信公衆平臺開發3-微信服務器IP接口實例(含源碼)的獲取微信服務器IP同樣,獲取到access_token後,替換
$userurl="https://api.weixin.qq.com/cgi-bin/user/get?access_token=".$token."";
中的access_token參數,並經過getdata()函數獲取返回的信息,處理後,進行打印,如圖所示。
若是關注用戶大於10000,需屢次調用,只需在接口後增長&next_openid=NEXT_OPENID的參數,NEXT_OPENID會在前一次調用時返回該值,如:
$userurl="https://api.weixin.qq.com/cgi-bin/user/get?access_token=".$token."&next_openid=NEXT_OPENID";
2、用戶基本信息接口(UnionID機制)調用實例
在經過獲取關注用戶列表接口獲取到用戶的OpenID後,可經過該參數並調用獲取用戶基本信息(UnionID機制)接口獲取用戶的基本信息,如:暱稱、城市、性別、用戶頭像、是否關注公衆號等信息,爲了更好的瞭解用戶,須要將這些信息一同保存到數據庫中。
接口說明
http請求方式:GET
接口調用地址:
https://api.weixin.qq.com/cgi-bin/user/info?access_token=ACCESS_TOKEN&openid=OPENID&lang=zh_CN
請求參數說明,如表所示:
參數 |
是否必須 |
說明 |
access_token |
是 |
調用接口憑證 |
openid |
是 |
普通用戶的標識,對當前公衆號惟一 |
lang |
否 |
返回國家地區語言版本,zh_CN 簡體,zh_TW 繁體,en 英語 |
返回說明:
正常狀況下,微信會返回JSON數據包給公衆號,以下所示:
{
"subscribe": 1,
"openid": "o6_bmjrPTlm6_2sgVt7hMZOPfL2M",
"nickname": "Band",
"sex": 1,
"language": "zh_CN",
"city": "廣州",
"province": "廣東",
"country": "中國",
"headimgurl": "http://wx.qlogo.cn/mmopen/g3MonUZtNHkdmzicIlibx6iaFqAc56vxLSUfpb6n5WKSYVY0ChQKkiaJSgQ1dZuTOgvLLrhJbERQQ4
eMsv84eavHiaiceqxibJxCfHe/0",
"subscribe_time": 1382694957,
"unionid": " o6_bmasdasdsad6_2sgVt7hMZOPfL"
"remark": "",
"groupid": 0,
"tagid_list":[128,2]
}
返回信息參數說明,如表所示:
參數 |
說明 |
subscribe |
用戶是否訂閱該公衆號標識,值爲0時,表明此用戶沒有關注該公衆號,拉取不到其他信息。 |
openid |
用戶的標識,對當前公衆號惟一 |
nickname |
用戶的暱稱 |
sex |
用戶的性別,值爲1時是男性,值爲2時是女性,值爲0時是未知 |
city |
用戶所在城市 |
country |
用戶所在國家 |
province |
用戶所在省份 |
language |
用戶的語言,簡體中文爲zh_CN |
headimgurl |
用戶頭像,最後一個數值表明正方形頭像大小(有0、4六、6四、9六、132數值可選,0表明640*640正方形頭像),用戶沒有頭像時該項爲空。若用戶更換頭像,原有頭像URL將失效。 |
subscribe_time |
用戶關注時間,爲時間戳。若是用戶曾屢次關注,則取最後關注時間 |
unionid |
只有在用戶將公衆號綁定到微信開放平臺賬號後,纔會出現該字段。 |
remark |
公衆號運營者對粉絲的備註,公衆號運營者可在微信公衆平臺用戶管理界面對粉絲添加備註 |
groupid |
用戶所在的分組ID(兼容舊的用戶分組接口) |
tagid_list |
用戶被打上的標籤ID列表 |
使用程序調用接口獲取,代碼:
<?php /* *獲取微信關注用戶基本信息 */ require('wei_function.php'); $appid="wx78478e595939c538"; $secret="5540e8ccab4f71dfad752f73cfb85780"; $url="https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=".$appid."&secret=".$secret.""; $output=getdata($url); $tokenarr=(array)json_decode($output); $token=$tokenarr['access_token']; //獲取關注用戶列表接口 $userurl="https://api.weixin.qq.com/cgi-bin/user/get?access_token=".$token.""; //經過getdata進行接口調用 $userarr=(array)json_decode(getdata($userurl)); //將返回信息進行處理並輸出 $useropenidarr=(array)$userarr['data']; foreach ($useropenidarr['openid'] as $value) { //循環獲取用戶基本信息 $infourl="https://api.weixin.qq.com/cgi-bin/user/info?access_token=".$token."&openid=".$value."&lang=zh_CN"; $infoarr=(array)json_decode(getdata($infourl)); print_r($infoarr); echo "<br />"; } ?>
代碼解析
require('wei_function.php');包含wei_function.php,該函數文件能夠購買《微信公衆平臺開發實例教程》,在該書中第95頁有詳細講解。
獲取到用戶OpenID列表後,根據每條OpenID獲取用戶基本信息,這裏用到foreach循環
foreach ($useropenidarr['openid'] as $value) {
//循環獲取用戶基本信息
$infourl="https://api.weixin.qq.com/cgi-bin/user/info?access_token=".$token."&openid=".$value."&lang=zh_CN";
$infoarr=(array)json_decode(getdata($infourl));
print_r($infoarr);
echo "<br />";
}
運行結果如圖所示。
若是須要將用戶信息保存到數據庫,只需替換print_r($infoarr);爲增長數據庫的代碼便可,如:
foreach ($useropenidarr['openid'] as $value) { //循環獲取用戶基本信息 $infourl="https://api.weixin.qq.com/cgi-bin/user/info?access_token=".$token."&openid=".$value."&lang=zh_CN"; $infoarr=(array)json_decode(getdata($infourl)); //將用戶信息增長到數據庫 $sql=」insert into userinfo(`nickname`,`sex`,`city`) values (‘」.$infoarr[‘nickname’].」’,’」.$infoarr['sex'].」’,’」.$infoarr['city'].」’)」; mysql_query($sql); }