调用OneSignal login()函数时重复创建用户记录的问题求助
调用OneSignal login()函数时重复创建用户记录的问题求助
大家好,我最近在用OneSignal Web SDK实现推送通知功能,想要通过外部ID来跨设备识别用户,但碰到了一个头疼的问题:
当用户成功登录后,我调用OneSignal.login(externalID)来关联用户的外部ID与OneSignal账号,但OneSignal并没有把当前SDK加载时生成的user_id和这个外部ID绑定,反而新建了一条独立的用户记录。现在我的OneSignal后台里有两条用户记录:
- 一条带有externalID,但没有推送订阅信息
- 另一条推送订阅状态为
push:subscribed,但没有绑定externalID
只有当用户登出再重新登录时,OneSignal才会把这两条记录合并成一条正确的关联记录。
这是我在用户登录成功后执行的Vue代码:
OneSignalDeferred.push(async function (OneSignal) { const id = await getUserId() console.log(id) console.log(OneSignal.User.onesignalId) await OneSignal.login(id).catch((error) => { console.error('OneSignal login error: ', error) }) })
我已经确认user_id和OneSignal.User.onesignalId都已经正确加载,数值也准确无误,没有出现未加载的情况。
预期行为
- 用户只需登录一次,externalID就能正确关联到已有的推送订阅记录
- OneSignal后台不会生成多条重复的用户记录
备注:内容来源于stack exchange,提问作者Anthony Li
相关产品推荐
相关产品推荐

