OneSignal is a push notification service for web and mobile apps. This SDK makes it easy to integrate your website with OneSignal Push Notifications. https://onesignal.com
Other
389
stars
115
forks
source link
[Bug]: Login: Error while identifying/upserting user: identifyUser: malformed request: Subscription not found #1185
This error appears intermittently while trying to log the user in and add data tags after client subscribes. The user is not logged in and no tags are added, a page refresh is necessary to complete the procedure
Full error message:
LoginManager.js:80 Login: Error while identifying/upserting user: identifyUser: malformed request: {"errors":[{"code":"subscription-0","title":"Subscription not found","meta":{"alias":{"Label":"onesignal_id","ID":"[onesignalid]"}}}]}
The ids in the log have been changed for privacy reasons
What browsers are you seeing the problem on?
Chrome (Chromium)
What operating system are you running?
MacOS, Linux, Windows
Steps to reproduce?
My code:
$(async () => {
const tags = {"tag": "value"};
OneSignalDeferred.push(async function (OneSignal) {
await OneSignal.init({
appId: "[APP ID]",
notifyButton: {
enable: true
},
serviceWorkerParam: { scope: "/js/sw/" },
serviceWorkerPath: "/js/sw/onesignalsdkworker.js"
});
if (OneSignal.User.onesignalId &&
OneSignal.User.PushSubscription.id &&
OneSignal.User.PushSubscription.id &&
OneSignal.User.PushSubscription.token &&
OneSignal.User.PushSubscription.optedIn
) {
OneSignal.User.addTags(tags);
return;
}
OneSignal.User.PushSubscription.addEventListener('change', async (event) => {
if (!event.current.token) {
return;
}
setTimeout(async () => {
await OneSignal.login(id_user);
OneSignal.User.addTags(tags);
}, 2000); // without the timeout the error appears more often
});
});
})
I added a delay between the push subscription change event and the user login & add tags to try to minimize the error occurrences but I still get them from time to time.
### What did you expect to happen?
The user should have been logged in and the data tags should have been added right after confirming the push notification subscription
### Relevant log output
```Shell
LoginManager.js:80 Login: Error while identifying/upserting user: identifyUser: malformed request: {"errors":[{"code":"subscription-0","title":"Subscription not found","meta":{"alias":{"Label":"onesignal_id","ID":"58eea521-83da-4a6a-9428-d90aa2f51f81"}}}]}
(anonymous) @ LoginManager.js:80
Promise.then (async)
login @ OneSignalSDK.page.es6.js?v=160201:1
(anonymous) @ OneSignal.js:84
login @ OneSignalSDK.page.es6.js?v=160201:1
(anonymous) @ 1721281600.min.js:1
setTimeout (async)
(anonymous) @ 1721281600.min.js:1
(anonymous) @ Emitter.js:113
Promise.then (async)
emit @ OneSignalSDK.page.es6.js?v=160201:1
(anonymous) @ OneSignalEvent.js:49
trigger @ OneSignalSDK.page.es6.js?v=160201:1
triggerSubscriptionChanged @ EventHelper.js:155
(anonymous) @ EventHelper.js:61
Promise.then (async)
checkAndTriggerSubscriptionChanged @ OneSignalSDK.page.es6.js?v=160201:1
(anonymous) @ SubscriptionHelper.js:22
Promise.then (async)
internalRegisterForPush @ OneSignalSDK.page.es6.js?v=160201:1
(anonymous) @ SubscriptionHelper.js:9
registerForPush @ OneSignalSDK.page.es6.js?v=160201:1
(anonymous) @ InitHelper.js:74
registerForPushNotifications @ OneSignalSDK.page.es6.js?v=160201:1
(anonymous) @ PromptsManager.js:114
internalShowNativePrompt @ OneSignalSDK.page.es6.js?v=160201:1
(anonymous) @ PromptsManager.js:86
Promise.then (async)
internalShowDelayedPrompt @ OneSignalSDK.page.es6.js?v=160201:1
(anonymous) @ PromptsManager.js:46
spawnAutoPrompts @ OneSignalSDK.page.es6.js?v=160201:1
(anonymous) @ InitHelper.js:68
Promise.then (async)
sessionInit @ OneSignalSDK.page.es6.js?v=160201:1
(anonymous) @ InitHelper.js:28
Promise.then (async)
internalInit @ OneSignalSDK.page.es6.js?v=160201:1
(anonymous) @ OneSignal.js:141
Promise.then (async)
e @ OneSignalSDK.page.es6.js?v=160201:1
(anonymous) @ OneSignal.js:145
_delayedInit @ OneSignalSDK.page.es6.js?v=160201:1
(anonymous) @ OneSignal.js:121
Show 93 more frames
OneSignalApiBase.js:53 Fetch failed loading: PATCH "https://onesignal.com/api/v1/apps/[appid]/users/by/onesignal_id/58eea521-83da-4a6a-9428-d90aa2f51f81/identity".
OneSignalApiBase.js:53
GET https://onesignal.com/api/v1/apps/[appid]/users/by/onesignal_id/58eea521-83da-4a6a-9428-d90aa2f51f81 404 (Not Found)
CoreModuleDirector.js:54
Error hydrating user: TypeError: Cannot destructure property 'onesignal_id' of 'e.identity' as it is undefined.
LoginManager.js:95 n: identifyUser: malformed request: {"errors":[{"code":"subscription-0","title":"Subscription not found","meta":{"alias":{"Label":"onesignal_id","ID":"58eea521-83da-4a6a-9428-d90aa2f51f81"}}}]}
at tn.<anonymous> (https://cdn.onesignal.com/sdks/web/v16/OneSignalSDK.page.es6.js?v=160201:1:219583)
at Generator.next (<anonymous>)
at r (https://cdn.onesignal.com/sdks/web/v16/OneSignalSDK.page.es6.js?v=160201:1:262795)
OneSignalApiBase.js:53 Fetch failed loading: GET "https://onesignal.com/api/v1/apps/[appid]/users/by/onesignal_id/58eea521-83da-4a6a-9428-d90aa2f51f81".
OneSignalApiBase.js:53
PATCH https://onesignal.com/api/v1/apps/[appid]/subscriptions/a0219da9-b180-47a4-8066-2e4f8b2b6e43 404 (Not Found)
OneSignalApiBase.js:53 Fetch failed loading: PATCH "https://onesignal.com/api/v1/apps/[appid]/subscriptions/a0219da9-b180-47a4-8066-2e4f8b2b6e43".
SessionManager.js:179 Error handling blur: n: Abort _getOneSignalAndSubscriptionIds: no identity
at Kt.<anonymous> (https://cdn.onesignal.com/sdks/web/v16/OneSignalSDK.page.es6.js?v=160201:1:106896)
at Generator.next (<anonymous>)
at r (https://cdn.onesignal.com/sdks/web/v16/OneSignalSDK.page.es6.js?v=160201:1:262795)
OneSignalApiBase.js:53 Fetch finished loading: PATCH "https://onesignal.com/api/v1/apps/[appid]/users/by/onesignal_id/c1bcce3b-b5bc-4481-b337-87e6d9b641a1".
What happened?
This error appears intermittently while trying to log the user in and add data tags after client subscribes. The user is not logged in and no tags are added, a page refresh is necessary to complete the procedure
Full error message:
LoginManager.js:80 Login: Error while identifying/upserting user: identifyUser: malformed request: {"errors":[{"code":"subscription-0","title":"Subscription not found","meta":{"alias":{"Label":"onesignal_id","ID":"[onesignalid]"}}}]}
The ids in the log have been changed for privacy reasons
What browsers are you seeing the problem on?
Chrome (Chromium)
What operating system are you running?
MacOS, Linux, Windows
Steps to reproduce?
I added a delay between the push subscription change event and the user login & add tags to try to minimize the error occurrences but I still get them from time to time.