Uni-App - 实战《悦读》之多应用、多平台统一登录关系
发布日期:2021-06-30 23:55:30
浏览次数:2
分类:技术文章
本文共 2384 字,大约阅读时间需要 7 分钟。
多平台统一登录之 unionID
通过获取用户基本信息接口,开发者可通过OpenID来获取用户基本信息,而如果开发者拥有多个应用,可使用以下办法通过UnionID机制来在多个应用进行用户帐号互通。
只要是同一个微信开放平台帐号下的公众号,用户的UnionID是唯一的。换句话说,同一用户,对同一个微信开放平台帐号下的不同应用,UnionID是相同的。
此前的OpenID机制,每个微信号对应每个应用有唯一的OpenID,所以不同应用之间是不能共享用户的,现在有了UnionID就可以了。
APP端获取 unionID
使用 uni.login 即可。
小程序端获取 unionID
步骤:
1、配置小程序 appid (此appid 在微信开放平台已经绑定);
2、使用 uni.login 登录时会获取 code,用 code 换取 seesion_key; 3、在获取用户信息函数中获取到加密信息; 4、利用 seesion_key 及加密信息在服务端解密获取 unionID
php 后端注意事项
需要开启 php_openssl 扩展
前端实现过程代码
export default { data() { return { }; }, methods:{ // #ifdef MP-WEIXIN getUserInfo : (info) => { //加密数据 var encryptedData = info.mp.detail.encryptedData; var iv = info.mp.detail.iv; info = info.mp.detail.userInfo; //info //userInfo {"nickName":"深海","gender":1,...avatarUrl":"https://7tdPvkPaJlkaLFFbLAffGVApluZdanLkDVplNlAhq1EJA/132"} //与服务器交互进行解密 uni.request({ url: _self.apiServer+'member&m=wxaes', method: 'POST', header: {'content-type' : "application/x-www-form-urlencoded"}, data: { session_key : session_key, encryptedData : encryptedData, iv : iv }, success: res => { console.log(res); //此处可以成功获取 unionId 利用 unionId 完成登录即可 }, fail: () => {}, complete: () => {} }); } }, onLoad:function(options){ _self = this; pageOptions = options; // #ifdef MP-WEIXIN // 调用 微信 login 获取 code uni.login({ success: (res) => { uni.request({ url:_self.apiServer+'member&m=codeToSession&code='+res.code, success: (sessions) => { session_key = sessions.data.session_key; } } } }); } }); // #endif}
php 后端代码
decryptData($_POST['encryptedData'], $_POST['iv'], $data); if ($errCode == 0) { exit($data); } else { exit(jsonCode('error', $errCode)); } }}
转载地址:https://lux-sun.blog.csdn.net/article/details/87879738 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
路过,博主的博客真漂亮。。
[***.116.15.85]2024年05月04日 19时38分44秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
关于Spring MVC与前端的交互
2019-04-30
Mybatis逆向工程的使用
2019-04-30
关于Hibernate的优缺点
2019-04-30
常用的 Maven 命令
2019-04-30
常用的20个正则表达式
2019-04-30
数据结构之顺序表的实现
2019-04-30
数据结构之线性链表
2019-04-30
JQuery使用validate插件完成校验
2019-04-30
关于java的继承
2019-04-30
关于java的内部类
2019-04-30
关于java的枚举
2019-04-30
一个简单的layui登陆界面
2019-04-30
SQL考试常见题目
2019-04-30
使用Spring Boot写一个简单的Hello World
2019-04-30
Spring Boot整合Servlet使用
2019-04-30
SpringBoot 文件上传
2019-04-30
我居然在Github上找到了一个完整的停车系统(附源码地址)
2019-04-30
大厂经典面试题:Redis为什么这么快?
2019-04-30
精通Spring?请吃我一狗腿!
2019-04-30
培训班老师说可以用这个干掉一大批面试者
2019-04-30