两个项目绑定同一个云空间,在第一个上面注册账号,再绑定手机号码,然后在第二个项目使用手机号码登录.为什么不是登录该账号,而是变成了新创建一个账号?
- 发布:2022-06-14 18:32
- 更新:2022-06-16 11:06
- 阅读:343
云开发接单 (作者) - 专攻云开发,有云开发的小单子可找我
我看了文档,需要修改dcloud_appid字段,但是每次登录,就需要给该用户添加dcloud_appid不是很麻烦吗?如果我后面的项目继续添加,不是要不断地修改dcloud_appid?
呆狗的一生 - 呆狗的一生
A、B系统共用一个服务空间,在A系统中注册了,在B系统中,算是新用户。因为两个appid不相同,是两个不同的应用。你这个图上面,两个appid分别是__UNI__FB90BB3
和__UNI__A3A3BD9
。另一个问题,不小心重置了appid的话,你可以查看数据库,把原来的值填写回去就行了。至于译器发疯的问题,我也没办法了
云开发接单 (作者) - 专攻云开发,有云开发的小单子可找我
还有就是,后来注册的用户,注册的dcoud_appid也是只有一个,想在另外一段打通,还需要注册的时候重新给他赋值?官方有没有考虑3端以上的情况?只考虑一端吗?
云开发接单 (作者) - 专攻云开发,有云开发的小单子可找我
即使每个删除dcloud_appid,只是允许之前已经注册过的用户登录任何端吧,但是即使之前的用户已经绑定了手机,通过手机号登录,还是会创建一个新的用户吧
-
如果允许一个用户登录多端应该使用授权登录接口,uni-id是以用户为维度的,手机号并非对应唯一用户。你可以详细描述下你的业务吗?
2022-06-15 16:00
-
云开发接单 (作者)
回复 DCloud_uniCloud_WYQ:我有多个项目,都是绑定在同一个服务空间,用户可以使用各种登录方式,
期望:他在某一个项目创建了账号,并绑定了手机号码,在另外一个项目使用手机号码登录的时候,应该是登录而不是注册新账号
实际:新用户在某一个端注册之后,默认赋值dcloud_appid为该项目的,并没有其他项目的,所以想打通所有项目的话,还需要每次注册之后重新赋值所有的dcloud_appid给该用户,才能让用户在各端登录,而且在后续业务扩展的时候,添加了新的项目,需要重新给所有用户添加新的dcloud_appid,遇到忘记添加新的dcloud_appid或者项目出了意外被重置新的dcloud_appid,会导致所有的老客户登录的时候变成新用户.这不合理
建议:目前我添加了一些逻辑,但是太繁琐,还需要特别小心.建议登录的时候可以传一个参数,不进行多端隔离,这点在底层应该容易实现吧2022-06-15 18:00
-
回复 云开发接单: 那你可以沿用旧uni-id逻辑,直接删除dcloud_appid字段,uni-id认为没有dcloud_appid字段的用户是可以在任一端登录的
2022-06-15 19:51
-
云开发接单 (作者)
回复 DCloud_uniCloud_WYQ: 删除dcloud_appid字段只对老用户可以登录任何端有效吧,但是有没有考虑新端,之前绑定手机号的用户,使用手机号登录的时候,还是会产生一个新的用户,并绑定新的dcloud_appid
2022-06-15 22:55
-
回复 云开发接单: 你的意思是存在一个无dcloud_appid的账户时还会创建一个新账户?只要是没有dcloud_appid字段的都认为是可以全端登录的。以短信验证码登录/注册为例,如果用户表存在一个使用手机号18812345678的用户且这个用户没有dcloud_appid字段,那么无论他在哪端用短信验证码都是登录行为而不是注册。
2022-06-16 11:03
-
云开发接单 (作者)
回复 DCloud_uniCloud_WYQ:下面代码可行,对于不断添加项目的来说,删除dcoud_appid字段应该是最好的方法了,应该不会影响以后的升级吧
2022-06-16 15:33
'use strict';
const uniID = require('uni-id')
const db = uniCloud.database()
exports.main = async (event, context) => {
const uniIDIns1 = uniID.createInstance({
context: {
APPID: "__UNI_123",
PLATFORM: "app-plus",
LOCALE: "zh-Hans",
CLIENTIP: '127.0.0.1'
}
})
await uniIDIns1.setVerifyCode({
mobile: '18812345678',
code: '123456',
expiresIn: 180,
type: 'login'
})
const {
uid: uid1
} = await uniIDIns1.loginBySms({
mobile: '18812345678',
code: '123456'
})
console.log(uid1);
await db.collection('uni-id-users').doc(uid1).update({
dcloud_appid: db.command.remove()
})
const uniIDIns2 = uniID.createInstance({
context: {
APPID: "__UNI_456",
PLATFORM: "mp-weixin",
LOCALE: "zh-Hans",
CLIENTIP: '127.0.0.1'
}
})
await uniIDIns2.setVerifyCode({
mobile: '18812345678',
code: '666666',
expiresIn: 180,
type: 'login'
})
const {
uid: uid2
} = await uniIDIns2.loginBySms({
mobile: '18812345678',
code: '666666'
})
console.log(uid2);
//返回数据给客户端
return {
uid1,
uid2
}
};