公衆號開發入門:查詢用戶是否已經關注公衆號?

背景

最近,小明在參與app改版時,有一個業務場景是:用戶完成指定的任務,判斷當前登陸用戶是否已經關注指定的官方微信公衆號,若是關注會得到相應的獎勵,爲了彌補語言的匱乏,小明偷偷給你們上張圖:程序員

app截圖

衆所周知,咱們程序員第一次接收到以前沒作過的需求時,第一步確定離不開搜查資料(我以爲國內的產品,百度就夠用),小明也不例外,花了大概五分鐘,一切就瞭然於胸,因而可知,程序員的搜商很重要 😂。ok,廢話少說,翠花,上菜!。小程序

必備條件

  • 微信公衆平臺-開發-基本配置-成爲開發者,獲得 appIdappSecret(注意:appSecret只展現一次,需保存下來,不然須要重置獲取),
  • 添加ip白名單,這個是爲了提升公衆平臺開發者接口調用的安全性,避免一旦開發者ID和密碼泄露後給賬號形成損失。對調用「獲取access_token」接口增長IP白名單校驗:只有將IP地址設置爲公衆號的IP白名單,才能成功調用該接口。
  • 微信認證經過,擁有獲取用戶基本信息的權限(注意:若是賬號主體爲我的,是沒法開通微信認證的);

詳細步驟

獲取access_token

https請求方式: 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數據包給公衆號:api

{"access_token":"ACCESS_TOKEN","expires_in":7200}

參數說明

參數 說明
access_token 獲取到的憑證
expires_in 憑證有效時間,單位:秒

錯誤時微信會返回錯誤碼等信息,JSON數據包示例以下(該示例爲AppID無效錯誤):安全

{"errcode":40013,"errmsg":"invalid appid"}

返回碼說明

返回碼 說明
-1 系統繁忙,此時請開發者稍候再試
0 請求成功
40001 AppSecret錯誤或者AppSecret不屬於這個公衆號,請開發者確認AppSecret的正確性
40002 請確保grant_type字段值爲client_credential
40164 調用接口的IP地址不在白名單中,請在接口IP白名單中進行設置。(小程序及小遊戲調用不要求IP地址在白名單內。)

詳情查看官方文檔-獲取access_token: https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140183微信

獲取用戶openId或者unionId

在關注者與公衆號產生消息交互後,公衆號可得到關注者的OpenID(說明:OpenID就是加密後的微信號,每一個用戶對每一個公衆號的OpenID是惟一的。對於不一樣公衆號,同一用戶的openid不一樣)。特別須要注意的是,若是開發者擁有多個移動應用、網站應用和公衆賬號,可經過獲取用戶基本信息中的unionid來區分用戶的惟一性,由於只要是同一個微信開放平臺賬號下的移動應用、網站應用和公衆賬號,用戶的unionid是惟一的。換句話說,同一用戶,對同一個微信開放平臺下的不一樣應用,unionid是相同的。所以,若是要判斷當前登錄app的微信用戶是否關注官方微信公衆號,咱們要使用的是unionId。須要前往微信開放平臺(open.weixin.qq.com)綁定公衆號後,纔可利用UnionID機制來知足上述需求。app

根據前兩個步驟得到的信息(access_token和openId或者unionId),調用微信接口獲取用戶基本信息

完整的用戶基本信息包括暱稱、頭像、性別、所在城市、語言和關注時間等。
接口調用請求說明:微信公衆平臺

https請求方式: 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://thirdwx.qlogo.cn/mmopen/g3MonUZtNHkdmzicIlibx6iaFqAc56vxLSUfpb6n5WKSYVY0ChQKkiaJSgQ1dZuTOgvLLrhJbERQQ4eMsv84eavHiaiceqxibJxCfHe/0",
    "subscribe_time": 1382694957,
    "unionid": " o6_bmasdasdsad6_2sgVt7hMZOPfL"
    "remark": "",
    "groupid": 0,
    "tagid_list":[128,2],
    "subscribe_scene": "ADD_SCENE_QR_CODE",
    "qr_scene": 98765,
    "qr_scene_str": ""
}

參數說明

參數 說明
subscribe 用戶是否訂閱該公衆號標識,值爲0時,表明此用戶沒有關注該公衆號,拉取不到其他信息。
openid 用戶的標識,對當前公衆號惟一
nickname 用戶的暱稱
sex 用戶的性別,值爲1時是男性,值爲2時是女性,值爲0時是未知
city 用戶所在城市

……網站

錯誤時微信會返回錯誤碼等信息,JSON數據包示例以下(該示例爲AppID無效錯誤):加密

{"errcode":40013,"errmsg":"invalid appid"}

詳情查看官方文檔-獲取用戶基本信息 https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140839

好了,以上就是今天小明整理給你們的有關公衆號開發的文檔。歡迎你們多多交流學習。

歡迎關注微信公衆號,獲取更多資源

程序員小明

相關文章
相關標籤/搜索