需求说明:
我的项目需求是已有微信小程序项目,新增app项目,需要将微信小程序的用户和app端的用户相关联。
实现方法:在微信开放平台,在同一账户下分别创建移动应用和微信小程序。
实现原理:同一微信登录的微信小程序和app,用户对应的unionid是一致的。
微信登录代码实现如下:
可查看uniapp官方文档的登录api,有详细的参数说明。
// 微信登录
wechatLogin(){
var that=this
uni.getProvider({
service: 'oauth',
success: function(res) {
console.log(res.provider);
//支持微信、qq和微博等
if (~res.provider.indexOf('weixin')) {
uni.login({
provider: 'weixin',
success: function (loginRes) {
console.log("App微信获取用户信息成功",loginRes);
//调用后端接口做登陆操作
that.wechatLoginFun(loginRes.authResult)
},
fail:function(loginRes){
console.log("App微信获取用户信息失败",res);
//调用后端接口做登陆操作
that.wechatLoginFun(loginRes)
}
})
}
}
});
}
遇到的问题:分别在微信小程序和app登录,获取的unionid不一致。
查找资料得知导致unionid不一致的原因有:
1>移动应用与微信小程序不在同一主体下
2>移动应用与微信小程序不在同一开放平台账号下
大家可以优先自己检查下这两点。
排除以上两点,在微信公众平台社区发帖求助,得到的官方回应如下:
查阅文档发现想要获取正确的unionid需要使用自定义基座。
配置自定义基座可参考另一篇博客,有详细介绍。
使用自定义基座后,可以正确的获得unionid,微信小程序和app的用户成功关联。
ios13+苹果登录
到这儿,登录功能还没完全完成,官方文档有明确指出,苹果在ios13+新增苹果登录功能,如果app登录有使用第三方登录(微信登录等),必须同时有苹果登录,否则app提审很可能会被拒绝。详情可查看:苹果登录
苹果登录代码如下:需要在苹果开发平台创建应用的时候,选择apple sign。
//判断是apple 13+
onLoad(){
let that = this
uni.getSystemInfo({
success: function (res) {
that.system = Number(res.system.substring(0,2))
that.platform = res.platform
if(that.platform == 'ios' && that.system < 13){
//不支持苹果登录
}else if(that.platform == 'ios' && that.system >= 13){
//调用苹果登录
that.appleLogin()
}
}
});
},
methods:{
//苹果登录
appleLogin(){
uni.login({
provider: 'apple',
success: function (loginRes) {
// 登录成功
uni.getUserInfo({
provider: 'apple',
success(res) {
// 获取用户信息成功
console.log(res)
/*
返回的数据
{
"errMsg": "getUserInfo:ok",
"rawData": "json字符串",
"userInfo": {
"openId": "xxx.xxxxx.xxx", // 苹果用户唯一标识符,该值在同一个开发者账号下的所有 App 下是一样的,开发者可以用该唯一标识符与自己后台系统的账号体系绑定起来。
"fullName": {}, // 当且仅当第一次授权才会返回
"authorizationCode": "12345678xxx", // 服务器验证需要使用的参数
"identityToken": "header.payload.signature", // 服务器验证需要使用的参数
"realUserStatus": 1 // 用于判断当前登录的苹果账号是否是一个真实用户
},
"signature": ""
}
*/
if(res.userInfo.openId != undefined){
uni.showToast({
title:'登录成功',
icon:'none'
})
}
}
})
},
fail: function (err) {
console.log(err)
}
});
},
}
在苹果登录的开发过程中,我遇到了一下问题,经过不断地查阅资料,得到了有效的解决方案。
问题1:IOS开发者证书信息有误,请重新填写相关信息 IOS profile文件与私钥证书文件不匹配。
原因:在mac上生成.p12证书错误
解决方案:
第二条很关键,我就是第二条错了。
问题2:运行到手机端的时候,提示“安装失败 return code=-402620395 ,手动安装提示校验失败”
原因:
1>查看官方说明code=-402620395官方说明
2>调试的手机没有被添加到苹果开发账号的设备里
解决方案:在苹果开发平台添加该设备。详细操作可参考基座配置博客。
问题3:运行到苹果手机,页面出现We'are sorry ... Back Close选择项
原因:mainfest.json里面模块权限没加
解决方案:注意配置完mainfest.json需要重新上传云打包,进行打包,否则不生效。
到这儿,uniapp实现app端的微信登录功能就实现啦。博客不断更新中~
要努力学习上进的芋头呀!!
原文地址:https://blog.csdn.net/weixin_40597676/article/details/110889471
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。