uniCloud.callFunction({
name: 'uni-id-cf',
data: {
action,
params
},
success: async ({
result
}) => {
console.log("login-result", result);
if (result.code === 0) {
if (type == 'univerify') {
uni.closeAuthView()
}
uni.hideLoading()
delete result.userInfo.token
// #ifdef MP-WEIXIN
if (type == 'weixin' && !result.userInfo.nickname) {
return this.$refs.userProfile.open(result.uid)
}
// #endif
this.setUserInfo(result.userInfo)
loginSuccess(result)
} else {
uni.showModal({
content: result.msg,
showCancel: false
});
}
},
complete: () => {
uni.hideLoading()
}
})
问题就在这行 this.setUserInfo(result.userInfo)
apple 首次登陆后的result里面uid并不在userInfo里.
实例:
{
"code": 0,
"msg": "注册成功",
"token": "x x x",
"tokenExpired": 1642923821777,
"uid": "uid在这个层级",
"type": "register",
"userInfo": {
"nickname": "xxx",
"apple_openid": "xxx",
"dcloud_appid": ["xxx"],
"register_date": 1640331821575,
"register_ip": "192.168.31.177",
"token": "xxx"
},
"openid": "xxx",
"errCode": 0,
"errMsg": "注册成功",
"message": "注册成功"
}
DCloud_uniCloud_JSON
应当是判断 result.type == "register"
感谢反馈,1.1.26版本的uni-starter将修复此问题。
2021-12-29 17:28