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 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:Uni-App - 实战《悦读》之API接口安全策略 - 签名策略
下一篇:Uni-App - 实战《悦读》之微信小程序端登录

发表评论

最新留言

路过,博主的博客真漂亮。。
[***.116.15.85]2024年05月04日 19时38分44秒