一.使用access_token和openid.訪問接口可以獲取到用戶信息
在關注者與公衆號產生消息交互後,公衆號可獲得關注者的OpenID(加密後的微信號,每個用戶對每個公衆號的OpenID是唯一的。對於不同公衆號,同一用戶的openid不同)。公衆號可通過本接口來根據OpenID獲取用戶基本信息,包括暱稱、頭像、性別、所在城市、語言和關注時間。
請注意,如果開發者有在多個公衆號,或在公衆號、移動應用之間統一用戶帳號的需求,需要前往微信開放平臺(open.weixin.qq.com)綁定公衆號後,纔可利用UnionID機制來滿足上述需求。
UnionID機制說明:
開發者可通過OpenID來獲取用戶基本信息。特別需要注意的是,如果開發者擁有多個移動應用、網站應用和公衆帳號,可通過獲取用戶基本信息中的unionid來區分用戶的唯一性,因爲只要是同一個微信開放平臺帳號下的移動應用、網站應用和公衆帳號,用戶的unionid是唯一的。換句話說,同一用戶,對同一個微信開放平臺下的不同應用,unionid是相同的。
獲取用戶基本信息(包括UnionID機制)
開發者可通過OpenID來獲取用戶基本信息。請使用https協議。
接口調用請求說明
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/g3MonUZtNHkdmzicIlibx6iaFqAc56vxLSUfpb6n5WKSYVY0ChQKkiaJSgQ1dZuTOgvLLrhJbERQQ4eMsv84eavHiaiceqxibJxCfHe/0", "subscribe_time": 1382694957, "unionid": " o6_bmasdasdsad6_2sgVt7hMZOPfL" }
參數說明
參數 | 說明 |
---|---|
subscribe | 用戶是否訂閱該公衆號標識,值爲0時,代表此用戶沒有關注該公衆號,拉取不到其餘信息。 |
openid | 用戶的標識,對當前公衆號唯一 |
nickname | 用戶的暱稱 |
sex | 用戶的性別,值爲1時是男性,值爲2時是女性,值爲0時是未知 |
city | 用戶所在城市 |
country | 用戶所在國家 |
province | 用戶所在省份 |
language | 用戶的語言,簡體中文爲zh_CN |
headimgurl | 用戶頭像,最後一個數值代表正方形頭像大小(有0、46、64、96、132數值可選,0代表640*640正方形頭像),用戶沒有頭像時該項爲空 |
subscribe_time | 用戶關注時間,爲時間戳。如果用戶曾多次關注,則取最後關注時間 |
unionid | 只有在用戶將公衆號綁定到微信開放平臺帳號後,纔會出現該字段。詳見:獲取用戶個人信息(UnionID機制) |
錯誤時微信會返回錯誤碼等信息,JSON數據包示例如下(該示例爲AppID無效錯誤):
{"errcode":40013,"errmsg":"invalid appid"}
二.使用appid和secret訪問接口.獲取公衆號的access_token
Access Token
在微信公衆平臺接口開發中,Access Token佔據了一個很重要的地位,相當於進入各種接口的鑰匙,拿到這個鑰匙纔有調用其他各種特殊接口的權限。
access_token是公衆號的全局唯一票據,公衆號調用各接口時都需使用access_token。正常情況下access_token有效期爲7200秒,重複獲取將導致上次獲取的access_token失效。
公衆號可以使用AppID和AppSecret調用本接口來獲取access_token。AppID和AppSecret可在開發模式中獲得(需要已經成爲開發者,且帳號沒有異常狀態)。注意調用所有微信接口時均需使用https協議。
接口調用請求說明
http請求方式: GET
https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET
參數說明
參數 |
是否必須 |
說明 |
grant_type |
是 |
獲取access_token填寫client_credential |
appid |
是 |
第三方用戶唯一憑證 |
secret |
是 |
第三方用戶唯一憑證密鑰,既appsecret |
返回說明
正常情況下,微信會返回下述JSON數據包給公衆號:
{"access_token":"ACCESS_TOKEN","expires_in":7200}
參數 |
說明 |
access_token |
獲取到的憑證 |
expires_in |
憑證有效時間,單位:秒 |
錯誤時微信會返回錯誤碼等信息,JSON數據包示例如下(該示例爲AppID無效錯誤):
{"errcode":40013,"errmsg":"invalid appid"}
代碼實現
$appid = ""; $appsecret = ""; $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=$appid&secret=$appsecret"; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $output = curl_exec($ch); curl_close($ch); $jsoninfo = json_decode($output, true); $access_token = $jsoninfo["access_token"];
特別說明
在OAuth2.0認證中,我們會看到另一種Access Token,請注意區別。