拿着unionId怎么校验是否是真手里拿着钱的微信表情unionId

详解微信小程序 登录获取unionid
转载 &更新时间:日 10:10:40 & 投稿:lqh
这篇文章主要介绍了详解微信小程序 登录获取unionid的相关资料,需要的朋友可以参考下
详解微信小程序 登录获取unionid
首先公司开发了小程序, 公众号网页和app等, 之前都是用的openid来区分用户, 但openid只能标识用户在当前小程序或公众号里唯一, 我们希望用户可以在公司各个产品(比如公众号, 小程序, app里的微信登录)之间, 可以保持用户的唯一性, 还好微信给出了unionid.
下面分两步介绍一下 微信小程序 获取unionid的过程.
1. 首先 在微信公众平台注册小程序 , 然后在小程序上模拟登录流程.
注 : 这里只是简单登录流程, 实际中需要维护登录态, wx.checkSession() 可以检查此时的登录态是否过期. 若过期, 要再次调用 wx.login() , 否则调用 wx.getUserInfo() 会拿不到用户数据.
注 : 此时后台服务器接收到你发的 code, 再用appid和appSecret等请求微信可以拿到openid和session_key encrypted_data, iv 等数据, 通过appId, appSecret解密可以获得openid和其他信息. (此时解出来并没有unionid, 接下来看第二步)
2. 接下来到 微信开发平台去 绑定开发账号.
一开始我也是对开放平台, 公众平台什么的有点懵, 后来看到开发平台的管理中心才明白,& 这些移动应用, 网站应用 或者公众号/小程序 能绑定同一个微信开发平台账号下, 则同一用户,对同一个微信开放平台下的不同应用,unionid是相同的。
大抵就是上图这样设置吧 , 立刻生效(有时也会过几分钟吧
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具假设网站A有以下功能需求:1,pc端微信扫码登录;2,微信浏览器中的静默登录功能需求,这两种需求就需要用到用户的unionID,这样才能在多个登录点(终端)识别用户。那么这两种需求下用户的unionID该如何获取呢?
1,先看pc端的解决方案
以snsapi_login为scope发起网页授权,先拿网站应用的appid和secret用授权接口获取&网页授权access_token&,再利用&网页授权access_token&通过&拉取用户信息的api接口&拉取用户信息从而获得unionId。
此方法适合场景:在不使用微信公众号(订阅号、服务号)的情况下,通过微信开放平台下的网站应用来实现pc端网站的微信扫码登录功能。这个场景需求相对来说比较简单,可参考按照微信开放平台的技术文档&网站应用&--&微信登录功能&一节来实现编码,下面只把用户扫描二维码授权微信登录(用户扫描二维码并在微信客户端弹出的授权窗口点击确认登录后)后如何获取unionID的方法和过程描述下。
用户授权登录后重定向到网站A的登录页,并带回code和state参数。先拿code获取网页授权access_token:
$curl = new Curl();
$wxresponse = $curl-&get('https://api.weixin.qq.com/sns/oauth2/access_token?appid=' . $appid
. '&secret=' . $secret . '&code=' . $code . '&grant_type=authorization_code');
$wxresult = json_decode($wxresponse);
请求参数说明:
应用唯一标识,在微信开放平台提交应用审核通过后获得
应用密钥AppSecret,在微信开放平台提交应用审核通过后获得
填写第一步获取的code参数
5 grant_type
填authorization_code
如果请求正确,返回值:
"access_token":"ACCESS_TOKEN",
"expires_in":7200,
"refresh_token":"REFRESH_TOKEN",
"openid":"OPENID",
"scope":"SCOPE"
access_token
接口调用凭证
expires_in
access_token接口调用凭证超时时间,单位(秒)
refresh_token
用户刷新access_token
授权用户唯一标识
用户授权的作用域,使用逗号(,)分隔
可以看到除access_token外,还可以获得openid。
然后用拿到的access_token和openid获取unionID:
//获取用户个人信息
$response = $curl-&get('https://api.weixin.qq.com/sns/userinfo?access_token=' . $wxresult-&access_token
. '&openid=' . $wxresult-&openid);
返回值就不详细写了,其中就有用户的unionID。
2,再看手机端微信浏览器的解决方案
方法一:以snsapi_userinfo为scope发起网页授权,获取unionID过程与pc端的相同,但要用到微信公众号中的服务号appid和secret获取网页授权access_token。
// 用户是从微信访问此页面,直接调用微信验证
header('Location: https://open.weixin.qq.com/connect/oauth2/authorize?appid=' . $appid
. '&redirect_uri=http%3A%2F%2Fwww.host.com%2Fsite%2Fcallback'
. '&response_type=code&scope=snsapi_userinfo&state=state#wechat_redirect');
这种方法在微信浏览器中的体验并不好,因为当用户在微信浏览器中浏览网页时点击了某个网页触发登录功能时会弹出授权窗口,而比较好的体验应该是,用户触发登录功能时应该是无感知的,下面的方法二就可以实现这种需求。
方法二:以snsapi_base为scope发起网页授权,先用公众号的appid和secret获取微信公众号的全局唯一凭证access_token,然后用拿到的access_token调用公众号的&用户管理接口&中的&获取用户信息接口&获得unionID。
发起授权请求,因为以snsapi_base为scope发起网页授权请求,所以授权是静默的,用户是无感知的,中有说明。
header('Location: https://open.weixin.qq.com/connect/oauth2/authorize?appid=' . $appid
. '&redirect_uri=http%3A%2F%2Fwww.host.com%2Fsite%2Fcallback'
. '&response_type=code&scope=snsapi_base&state=state#wechat_redirect');
获取公众号全局唯一access_token
$curl = new Curl();
$curl-&setOption(CURLOPT_SSL_VERIFYPEER, false);
$tokenresult = $curl-&get('https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=' . $appid . '&secret=' . $secret);
如果请求正确的话,返回值:
1 {"access_token":"ACCESS_TOKEN","expires_in":7200}
4 access_token
获取到的凭证
5 expires_in
凭证有效时间,单位:秒
调用公众号&获取用户信息接口&:
$response = $curl-&get('https://api.weixin.qq.com/cgi-bin/user/info?access_token=' . $token . '&openid=' . $wxresult-&openid . '&lang=zh_CN');
如果正确的话,返回值示例:
"subscribe": 1,
"openid": "o6_bmjrPTlm6_2sgVt7hMZOPfL2M",
"nickname": "Band",
"language": "zh_CN",
"city": "广州",
"province": "广东",
"country": "中国",
"headimgurl":
"http://wx.qlogo.cn/mmopen/g3MonUZtNHkdmzicIlibx6iaFqAc56vxLSUfpb6n5WKSYVY0ChQKkiaJSgQ1dZuTOgvLLrhJbERQQ4
13 eMsv84eavHiaiceqxibJxCfHe/0",
"subscribe_time": ,
"unionid": " o6_bmasdasdsad6_2sgVt7hMZOPfL"
"remark": "",
"groupid": 0,
"tagid_list":[128,2]
23 参数说明
25 subscribe
用户是否订阅该公众号标识,值为0时,代表此用户没有关注该公众号,拉取不到其余信息。
用户的标识,对当前公众号唯一
27 nickname
用户的昵称
用户的性别,值为1时是男性,值为2时是女性,值为0时是未知
用户所在城市
30 country
用户所在国家
31 province
用户所在省份
32 language
用户的语言,简体中文为zh_CN
33 headimgurl
用户头像,最后一个数值代表正方形头像大小(有0、46、64、96、132数值可选,0代表640*640正方形头像),用户没有头像时该项为空。若用户更换头像,原有头像URL将失效。
34 subscribe_time
用户关注时间,为时间戳。如果用户曾多次关注,则取最后关注时间
35 unionid
只有在用户将公众号绑定到微信开放平台帐号后,才会出现该字段。
公众号运营者对粉丝的备注,公众号运营者可在微信公众平台用户管理界面对粉丝添加备注
37 groupid
用户所在的分组ID(兼容旧的用户分组接口)
38 tagid_list
用户被打上的标签ID列表
用户无论从pc端登录网站还是从微信浏览器中访问网站,我们都能获取unionID,从而实现了多点登录的用户识别。
阅读(...) 评论()【已解决】微信接口有变动吗? 获取用户信息,突然不返回 unionid 了 ... ...
查看: 888|
评论: 0|原作者: 风之影|来自: 微信公众平台
摘要: 【已解决】微信接口有变动吗? 获取用户信息,突然不返回 unionid 了
user/info?access_token=%s&openid=%s&lang=zh_CN网友回复:林***:17:12分后 突然出现的问题林***:果然是API调整,也不提前发通知。 (⊙﹏⊙)b程***:我们也遇到这个问题,unionid获取不到了,调整了什么,好像没看见文档变化
上一篇:下一篇:
小程序开发问答相关问题
小程序无法通过api动态修改page页面的背景颜色--小程序开发
51小程序map的markert能否支持更多的功能
小程序内怎么跳转到另一个小程序,是不是必须同一个公众号下关联的才行--微信小程序教
小程序不改代码的前提下view有时显示有时不显示
小程序小程序 录制视频#小程序开发
getBackgroundAudioManager的src问题
Android textarea 点击后,光标位置漂移了+微信小程序教程
51小程序cover-view fixed定位失败
setStorageSync fail&小程序开发
蓝牙相关,重复调用onBLECharacteristicValueChange+微信小程序教程
小程序开发问答热门文章
233936查看
最新小程序开发问答
最新小程序开发帖子
热门小程序源码
热门小程序开发教程
Powered by Discuz! X3.2亲爱的开发者朋友:我们很高兴和大家分享一个消息,团队正式启用Mob.com顶级域名,Mob即Mobile缩写,全面转型为移动
第三方授权
android:shareSDK v2.4.0
shareSDK v2.4.0版本支持了weChat第三方授权,试用之后发现getDb().getUserId()返回值与umeng的返回的unionID是一致的,不过我们以前一直用的是umeng返回的openID,有没有办法在shareSDK的接口里加入获得openID的办法?
你可以打印一下授权成功后的res,里面是第三方返回的所有信息,我们是不做处理的,直接返回给开发者,你看一下里面有没有你想要的信息。
免费咨询 | 24小时在线

我要回帖

更多关于 手拿着手机微信 的文章

 

随机推荐