-*-*-*-*-*-*-*-*-*--*-*-*-
1、小程序通過code獲取用戶openid的接口,如果用戶曾經授權並未過期,或者用戶關注過同主體的公眾號,會帶回unionID,但沒有用戶頭像等信息
2、關注和取消關注:會返回用戶OPENID和事件類型(沒有unionId和其他信息[信息很少])
3、通過這個接口獲取用戶信息,有unionID(前提:公眾號必須綁定開放平台[開放平台的注冊要有企業資質,不同主體只能綁定5個,相同主體50個])
https://api.weixin.qq.com/cgi-bin/user/info?access_token=ACCESS_TOKEN&openid=OPENID&lang=zh_CN
{"subscribe":1,"openid":"xxx","nickname":"***","sex":1,"language":"zh_CN","city":"武漢","province":"湖北","country":"中國","headimgurl":"htttp://-","subscribe_time":1531834805,"unionid":"***","remark":"","groupid":0,"tagid_list":[],"subscribe_scene":"ADD_SCENE_SEARCH","qr_scene":0,"qr_scene_str":""}
4、公眾號登錄授權(關注過的),返回open_id和用戶的access_token(沒有unionID,除非指定scope=snsapi_userinfo)
https://api.weixin.qq.com/sns/oauth2/access_token?appid=wxee58414660eafe0f&secret=815598b9eaccf4efcf2a6dd37ba8aafe&code=081nGCtC16UWI30pHBqC1InvtC1nGCto&grant_type=authorization_code
{"access_token":"xxx","expires_in":7200,"refresh_token":"xxx","openid":"oovPVwP49U6d_Noea9RS1_iJpu5I","scope":"snsapi_base"}
/*引自微信*/
關於特殊場景下的靜默授權
a、上面已經提到,對於以snsapi_base為scope的網頁授權,就靜默授權的,用戶無感知;
b、對於已關注公眾號的用戶,如果用戶從公眾號的會話或者自定義菜單進入本公眾號的網頁授權頁,即使是scope為snsapi_userinfo,也是靜默授權,用戶無感知。
上面的授權鏈接有一個默認參數:scope
https://api.weixin.qq.com/sns/userinfo?access_token=ACCESS_TOKEN&openid=OPENID&lang=zh_CN(這個ACCESS_TOKEN是app的)
unionid 只有在用戶將公眾號綁定到微信開放平台帳號后,才會出現該字段。
調用這個接口的前提是:網頁授權作用域為snsapi_userinfo
5、小程序授權接口可以獲取unionID
a、前提:用戶關注了同一主體的公眾號(取消關注后不再返回)
通過接口:/sns/jscode2session?appid=%s&secret=%s&js_code=%s&grant_type=authorization_code 返回:{"openid":"oOMYa0aUgjAeqEguLnIGkbQCIT-k","unionid":null}
6、通過公眾號的用戶信息接口獲取小程序的用戶信息(cgi-bin/user/info),會報:api unauthorized
7、小程序得到的code也可以使用公眾號的授權接口(能獲取到小程序的openid[沒有用戶信息])
而且有可能通過指定scope=snsapi_userinfo,獲取到unionID(猜想,沒有測試)
8、關於微信自動回復等事件
客服接待了這個用戶,文本消息事件(用戶發送消息),就不會發事件給服務器端了(相當於自動回復失效)
客服接待時,會向服務端發送event:kf_create_session的通知
9、如果用戶未關注公眾號,靜默授權后請求/cgi-bin/user/info,只有openid,沒有頭像、昵稱、unionid
關於小程序獲取unionid的方法,官方鏈接:https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/union-id.html