关于微信登录授权获取unionid的方法
前言:微信登录授权是目前普遍存在于小程序的,还有一种静默授权方式是微信提供的但是不推荐使用,由于不同设备登录openid是不同的那么我们应该怎样拿到一个唯一的ID呢,下面做分享
wxml代码 <button open-type="getUserInfo" bindgetuserinfo='userInfo'>授权</button> //这两个方法是官方提供使用的
wxjs代码
//当用户点击触发wx.getUserInfo
wx.getUserInfo({
//成功后会返回你登录扫码的那个微信的相关信息
success(res) {
//console.log(res);
var _getUserInfo = res;
var _userInfo = JSON.parse(res.rawData);
//_this.setData({ nickName: _userInfo.nickName, avatarUrl: _userInfo.avatarUrl });这里主要修改了显示了用户信息
/**登陆:获取openid */
wx.login({
success(res) {
//console.log(res);
wx.request({
url: 'http://127.0.0.1:8000/api/v1/Index/getOpenid',//这里是后台的接口地址
method: 'post',//method
data: {
code: res.code, //上面成功返回的值
encryptedData: _getUserInfo.encryptedData,//下面成功返回的值
iv: _getUserInfo.iv//上面成功返回的值
},
success(res) {
console.log(res);
}
})
}
})
}
})
//后端php代码 获取用户登录的相关信息方法
public function getOpenid(){
include_once "../wx/PHP/wxBizDataCrypt.php";//通过小程序提供的==>https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/signature.html
$data = request()->post();//获取传递的值
$appid = "xxxx";//登录appid
$secret = "xxxx";//secret密码
$iv = $data['iv'];//登录成功会返回的小程序端口传递过来的
$encryptedData = $data['encryptedData'];//同上传递过来的
$code = $data['code'];//同上传递过来的
$url = "https://api.weixin.qq.com/sns/jscode2session?appid={$appid}&secret={$secret}&js_code={$code}&grant_type=authorization_code";//get调用这个小程序接口
$data = json_decode(file_get_contents($url),true);//返回一个字符串包含了openid
// halt($data);
$sessionKey = $data['session_key'];//获取返回的解密方法
$openid = $data['openid'];
$pc = new \WXBizDataCrypt($appid, $sessionKey);
$errCode = $pc->decryptData($encryptedData, $iv, $unionId );
halt($uniont);//获取解密后的unionid到这里你也是拿不到的需要在小程序开发平台绑定小程序

到此你大概知道了吧openid是加密后的值我们只需要解密出来就可以得到唯一的unionid值
关于微信登录授权获取unionid的方法的更多相关文章
- 网站微信登录授权 ASP.NET
最新做一些项目都有微信登录注册什么的,今天就把自己整理的demo提供给大家 微信认证流程(我自己简称三次握手): 1.用户同意授权,获取code 2.通过code换取网页授权access_token, ...
- 混合应用 微信登录授权 微信登录认证失败 ios PGWXAPI错误-1 code:-100 / 安卓 message:invalid appsecret innerCode:40125
最近项目需要做微信登录,于是利用HTML5+ API Reference的OAuth模块管理客户端的用户登录授权验证功能,允许应用访问第三方平台的资源.(链接:https://www.dcloud.i ...
- mui APP 微信登录授权
一.在微信平台上申请appid.appsecret. 二.app --> manifest.json-->SDK配置(填写申请好的appid和appsecret) 三.在登录页,点击微信登 ...
- 微信OAuth授权获取用户OpenId-JAVA(个人经验)【申明:来源于网络】
微信OAuth授权获取用户OpenId-JAVA(个人经验)[申明:来源于网络] 地址:https://my.oschina.net/xshuai/blog/293458
- 微信公众号订阅号以及服务号通过网页授权获取用户openid方法
微信官方文档:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140842 官方流程 网页授权流程分为四步: 1.引导用户 ...
- 小程序登录&授权&获取用户信息
一 .登录 时序图如下: wx.login() 获取js_code 示例代码: App({ onLaunch: function() { wx.login({ success: ...
- 微信网页授权获取用户基本信息--PHP
现在就说说怎么通过网页授权获取用户基本信息(国家,省,市,昵称)等. 必要条件: 1)公众号认证 2)有网页授权获取用户基本信息的权限接口 注意:最近有朋友说:在公众平台申请的测试号,会出现无法取到用 ...
- 微信网页授权+获取用户基本信息+强制关注+JSSDK分享参数
网页授权+获取用户基本信息+强制关注+JSSDK分享参数 //支付宝红包口令列表 public function view(){ $openid = ""; Vendor('Wei ...
- 吐血记录微信小程序授权获取Unionid及linux下使用bouncycastle解密用户数据 遇到的坑
背景 公司小程序上线了,发现系统无法拿到一些用户的UniondID.但是上线前的测试一切都是正常的. 坑1 经排查,发现一些用户通过下面的接口无法得到unionid https://api.weixi ...
随机推荐
- SQLServer之创建事务未提交读
未提交读注意事项 使用 SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED 指定会话的锁定级别. 一次只能设置一个隔离级别选项,而且设置的选项将一直对那个 ...
- 转 Angular2优质学习资源收集
文档博客书籍类 官方网站: https://angular.io 中文站点: https://angular.cn Victor的blog(Victor是Angular路由模块的作者): https: ...
- Python开发【第二篇】运算符
"+" 加号 __author__ = 'Tang' a = 8 b = 9 c = a + b a = 8.0 b = 9 c = a + b print(c) # 17.0 a ...
- Win7 64位 + LoadRunner 11录制时弹不出IE的解决办法 Win7 64位 + LoadRunner 11录制时弹不出IE的解决办法
Win7 64位 + LoadRunner 11录制时弹不出IE的解决办法 Win7 64位 + LoadRunner 11录制时弹不出IE的解决办法 1. 卸载IE9( 装了Win7 64位后,默认 ...
- webpack开发环境和生产环境切换原理
在package.json中有如下设置: "scripts": { "dev": "node build/dev-server.js" ...
- centos7下kubernetes(13。kubernetes-探讨service IP)
service cluster IP是一个虚拟IP,是由kubernetes节点上的iptables规则管理的 通过iptables-save | grep 10.105.215.156看到与clus ...
- Android 动态设置TextView的drawableLeft等属性
首先,我们在开发过程中,会经常使用到android:drawableLeft="@drawable/ic_launcher"这些类似的属性: 关于这些属性的意思,无非是在你的tex ...
- 解决 tomcat 重启上传文件消失
开发模式 首先开发者模式下,部署在 Tomcat 上没有什么好的办法,否则无法调试 除非使用绝对路径,缺点:不同的操作系统路径不同,自动设置 对于图片上传一般我们使用图片服务器,上传 CDN中 一般获 ...
- VMware安装CentOS 6.9教程
CentOS(Community Enterprise Operating System,中文意思是:社区企业操作系统)是Linux发行版之一,它是来自于Red Hat Enterprise Linu ...
- DependencyInjection源码解读之ServiceProvider
var services = new ServiceCollection(); var _serviceProvider = services.BuildServiceProvider(); serv ...