微信 公众号 小程序 授权 unionid 用户信息 实验总结
-*-*-*-*-*-*-*-*-*--*-*-*-
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 用户信息 实验总结的更多相关文章
- PHP 微信公众号/小程序获取openid,用户信息
1.获取code (获得openid的前置条件) 地址:https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redi ...
- .NET Core 微信公众号小程序6种获取UnionID方法,你知道哪几种?
前言 获取UnionID是开发微信公众号/小程序中很有必要的一个环节,特别是针对一个公司拥有多个公众号小程序而推出的机制,实现打通账户一体化,用UnionID来区分多平台的唯一性. 官方的解释:如果开 ...
- TP3.2校验微信公众号||小程序 服务器地址
1.在TP3.2里面,写一个控制器,用来校验微信公众号||小程序的服务器地址 <?php namespace Home\Controller; use Think\Controller; hea ...
- 微信公众号&小程序 -- 获取并解密用户数据(获取openId、unionId)
本文转自https://my.oschina.net/u/3235888/blog/832895 前言 微信小程序API文档:https://mp.weixin.qq.com/debug/wxadoc ...
- apipost 调试微信公众号 小程序,秒生成文档工具
1.将已经鉴权的公众号,小程序接口的 header头信息复制进来 2.设置文档展示字段
- PHP原生实现,校验微信公众号||小程序服务器地址
1.原生的.php文件: test.php <?php header('Content-type:text'); define("TOKEN", "weixin& ...
- [重要更新]微信小程序登录、用户信息相关接口调整:使用 wx.getUserProfile 取代 wx.getUserInfo
2021年2月24日,微信官方团队发布了一个调整通知:<小程序登录.用户信息相关接口调整说明>,公告明确从4月13日起,所有发布的小程序将无法使用 wx.getUserInfo 接口(JS ...
- ASP.NET微信公众号用于给指定OpenId用户发送红包
ASP.NET微信公众号用于给指定OpenId用户发送红包 微信公众号要实现对指定用户发送红包,必须指定一个存放兵发放金额的商户号,在微信商户平台里面申请商户号并获取相关参数例如发送红包所要用到的安全 ...
- [python]通过微信公众号“Python程序员”,编写python代码
今天发现微信公众号中,居然可以编写python代码,很是惊喜,觉得蛮有趣的. 步骤如下: 1.关注微信公众号“Python程序员” 2.关注成功后,点击右下角的“潘多拉”->"Pyth ...
随机推荐
- Android进程管理
1.进程按照优先级分为不同的等级FVSBE Foreground process前台进程:用户可看到进程里某个activity界面(可以获得焦点的) Visible process可见进程:用户仍可见 ...
- Cloudera Manager安装之利用parcels方式安装单节点集群(包含最新稳定版本或指定版本的安装)(添加服务)(CentOS6.5)(四)
不多说,直接上干货! 福利 => 每天都推送 欢迎大家,关注微信扫码并加入我的4个微信公众号: 大数据躺过的坑 Java从入门到架构师 人工智能躺过的坑 ...
- 【Qt开发】QTime类
QTime类为用户提供一系列时间的函数,封装的很全面,几乎满足了各种时间的需求. 常用方法介绍 1.QTime addMSecs(int ms) const 当前时间增加毫秒,ms可为负 2.QTim ...
- 性能调优-CPU方面,内存方面
CPU调优 首先要清楚数据库应用的分类,一般分为两类:OLTP(Online Transaction Processing,在线事务处理)和OLAP(Online Analytical Process ...
- HDU 1465 不容易系列之一(排错公式)
大家常常感慨,要做好一件事情真的不容易,确实,失败比成功容易多了! 做好“一件”事情尚且不易,若想永远成功而总从不失败,那更是难上加难了,就像花钱总是比挣钱容易的道理一样. 话虽这样说,我还是要告诉 ...
- JAVA标签
java没有GOTO,可以通过标签实现跳转. 在 Java 里唯一需要用到标签的地方就是拥有嵌套循环,而且想中断或继续多个嵌套级别的时候. 使用位置:用在循环语句之前.----它实际需要紧靠在循环语句 ...
- ORACLE: private ,dao中util执行规范,nextval计数把通过nextval插入但已删除的列也统计在内向后计数
private DAO中的util.rs.sql都应该为private. 其中每个具体方法执行增删改查操作前打开数据库连接,操作完成后关闭数据库连接.操作要规范,不然易出错. nextval seq_ ...
- SQL Serever学习17——数据库的分析和设计
数据库的分析和设计 设计数据库确定一个合适的数据模型,满足3个要求: 符合用户需求,包含用户所需的所有数据 能被数据库管理系统实现,如sqlserver,oracle,db2 具有比较高质量,容易理解 ...
- jquery中 dom对象与jQuery对象相互转换
var jq = $(dom对象);//额 再补充点吧好记. $是jquery的别名.这一句等价于 var jq = jQuery(dom对象); 反之. dom对象 = jq[0]; //不写那么长 ...
- NET Core 应用程序 IIS 运行报错 502.3-Gateway
转自:http://www.zmland.com/forum.php?mod=viewthread&tid=941 将 NET Core 应用程序部署在 IIS 环境,默认配置下,如果任务执行 ...