在關注者與公眾號產生消息交互后,公眾號可獲得關注者的OpenID(加密后的微信號,每個用戶對每個公眾號的OpenID是唯一的。對於不同公眾號,同一用戶的openid不同)。公眾號可通過本接口來根據OpenID獲取用戶基本信息,包括昵稱、頭像、性別、所在城市、語言和關注時間。
關於網頁授權的兩種scope的區別說明
1、以snsapi_base為scope發起的網頁授權,是用來獲取進入頁面的用戶的openid的,並且是靜默授權並自動跳轉到回調頁的。用戶感知的就是直接進入了回調頁(往往是業務頁面)
2、以snsapi_userinfo為scope發起的網頁授權,是用來獲取用戶的基本信息的。但這種授權需要用戶手動同意,並且由於用戶同意過,所以無須關注,就可在授權后獲取該用戶的基本信息。(我是用測試號測試這個功能的,發現還是需要關注的。具體要看實際公眾號體驗了)
3、用戶管理類接口中的“獲取用戶基本信息接口”,是在用戶和公眾號產生消息交互或關注后事件推送后,才能根據用戶OpenID來獲取用戶基本信息。這個接口,包括其他微信接口,都是需要該用戶(即openid)關注了公眾號后,才能調用成功的。
獲取用戶的基本信息
def get_userinfo(access_token,openid,lang='zh_CN'): #需要用戶關注公眾號 query_url = 'https://api.weixin.qq.com/cgi-bin/user/info?access_token=%s&openid=%s&lang=%s'%(access_token,openid,lang) response = requests.get(query_url) return json.loads(response.text)
根據條件批量獲取用戶信息:
def get_batch_userinf(access_token,postdata): '''postdata ={ "user_list": [ { "openid": "o-TXmsiCVUNT0iDRRaiW8iTxhx4Q", "lang": "zh_CN" }, ]''' query_url ='https://api.weixin.qq.com/cgi-bin/user/info/batchget?access_token=%s'%access_token postdata = json.dumps(postdata,ensure_ascii=False) response = requests.post(query_url,postdata) return json.loads(response.text)
獲取關注者列表
def get_fans(access_token,next_openid=''): #獲取關注者列表 query_url = 'https://api.weixin.qq.com/cgi-bin/user/get?access_token=%s&next_openid=%s'%(access_token,next_openid) response = requests.get(query_url) return json.loads(response.text)