Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

firebase.messaging.getToken() edgecase when push notification is set back to default (ask) #2364

Open
thomasmburke opened this issue Nov 15, 2019 · 91 comments · Fixed by thematters/matters-web#865

Comments

@thomasmburke
Copy link

[REQUIRED] Describe your environment

  • Operating System version: macOS Mojave Version 10.14.6
  • Browser version: Google Chrome Version 78.0.3904.97
  • Firebase SDK version: 7.0.0
  • Firebase Product: Firebase Cloud Messaging

[REQUIRED] Describe the problem

The issue I have identified was introduced in version 7.0.0 of the firebase-js-sdk. I do not run into this issue in versions previous to 7.0.0. The issue occurs when a use grants notification permissions, gets a FCM token, then updates the notification permissions in the browser back to Ask (default), reloads the page, grants notification permissions again in Chrome, and get an error when trying to getToken at this point. Note: subsequent calls to getToken don't face this issue.

Steps to reproduce:

The problem occurs after taking the following steps:

  • Call Notification.requestPermission() and user grants permissions

  • Call firebase.messaging.getToken()

  • Set notification permission in browser back to Ask (default)
    image

  • Call Notification.requestPermission() and user grants permissions

  • call firebase.messaging.getToken()

  • get DELETE https://fcmregistrations.googleapis.com/v1/projects/{project_id}/regis.../{FCM_token} 500 error and this specific error from FCM: "FirebaseError: Messaging: A problem occured while unsubscribing the user from FCM: FirebaseError: Messaging: A problem occured while unsubscribing the user from FCM: Internal error encountered. (messaging/token-unsubscribe-failed). (messaging/token-unsubscribe-failed)."

  • call messaging.getToken() again

  • get new token, no error this time.

Others have encountered this issue as well on Google Groups:
https://groups.google.com/a/google.com/forum/#!msg/firebase-developer-cuf/dGU1SnJ1cz0/GMa_WvWGBwAJ

Relevant Code:

The firebase javascript messaging quickstart encounters this issue:
https://github.com/firebase/quickstart-js/tree/master/messaging

Specifically, I think the update needs to be made here:
firebase-js-sdk/packages/messaging/src/controllers/base-controller.ts
Lines: 136-137

@google-oss-bot
Copy link
Contributor

I couldn't figure out how to label this issue, so I've labeled it for a human to triage. Hang tight.

@bjgrosse
Copy link

I also ran into this error just as the OP described.

@mindiii006
Copy link

I am also getting this issue.

@rommelpe
Copy link

Thank for the report. I was able to reproduce this using the quick start guide and filed an internal report (b/144697421).

error-messaging

I'm just wondering if you y'all happen to consistently facing this issue. There are times that I can only reproduce it on the initial load or upon requesting permission several times. Are there any particular patterns you notice that significantly contributes to the issue (aside from what mentioned)?

@thomasmburke
Copy link
Author

Hi rommelpe,

This issue only arises after the a reset of notifications permissions and reload of page and then works properly with an additional reloaded pages. Aside from what I mentioned there are no other patterns that contribute to the issue identified.

Thanks, and let me know if there are any other questions.

@Nox04
Copy link

Nox04 commented Nov 18, 2019

I'm getting the same issue when I remove the push notifications permission and reload.

@gestewa
Copy link

gestewa commented Nov 18, 2019

I am also getting this issue.

@thayannevls
Copy link

I'm getting the same error :(

@mmermerkaya
Copy link
Contributor

Thanks for the report. I can consistently reproduce the behavior and I'm investigating the issue.

I'd like to ask everyone to please refrain from posting "This is happening to me too" comments and instead use the add reaction feature on the OP to add a thumbs up to issues that you consider important.

@TrackMyToken
Copy link

Any update on this issue?

@mmermerkaya
Copy link
Contributor

Hello, sorry for the lack of updates. Looks like the problem is in our backend, but there wasn't much progress as we've had a code freeze last week (because of black friday). I should be able to give you a better update or even a fix later this week.

@NaghamHalabi
Copy link

Can we have the latest updates regarding this issue?

@mmermerkaya
Copy link
Contributor

Hey everyone, our backend team is still investigating this. Since it's taking longer than my initial estimate, I just submitted a PR to temporarily suppress this error.

@spawnrider
Copy link

Also reproduced this issue and need a fix
Using Firebase version 7.5.2

@kdluu
Copy link

kdluu commented Dec 11, 2019

This is happening to me too

@hsubox76 hsubox76 added this to the 7.6.0 milestone Dec 12, 2019
@hsubox76
Copy link
Contributor

The temporary change to suppress the error, mentioned by @mmermerkaya above, is in 7.6.0 which has just been released.

@CodeByBryan
Copy link

Using 7.6.0 and am still having the same issue!

@mmermerkaya
Copy link
Contributor

If you're only seeing the error in the console, that's normal. My PR is still logging the error in the console, but it should not stop the getToken call from completing successfully.

@CodeByBryan
Copy link

I am receiving a token value when https://firebaseinstallations.googleapis.com/v1/projects/.../authTokens:generate is called, but get a "500" error when calling getToken()

@GoktuqCan
Copy link

I get this error when using "127.0.0.1" instead of localhost.
BUT if i use "localhost" even the getToken() is not working. Showing CORS policy error.

  • On localhost error is(cannot getToken())
OPTIONS https://firebaseinstallations.googleapis.com/v1/projects/{project_id}/installations/{some_token}/authTokens:generate 403

Access to fetch at 'https://firebaseinstallations.googleapis.com/v1/projects/{project_id}/installations/{some_token}/authTokens:generate' from origin 'http://localhost:3000' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. If an opaque response serves your needs, set the request's mode to 'no-cors' to fetch the resource with CORS disabled.
  • On 127.0.0.1 error(getting token but shows this error) is:
DELETE https://fcmregistrations.googleapis.com/v1/projects/{project_id}/regis.../{FCM_token} 500

FirebaseError: Messaging: A problem occured while unsubscribing the user from FCM: Internal error encountered. (messaging/token-unsubscribe-failed). (messaging/token-unsubscribe-failed).

@mmermerkaya
Copy link
Contributor

The CORS error looks like an unrelated issue. Can you create a new bug report for that?

@Ridermansb
Copy link

@mmermerkaya did you created new issue for CORS problem?
I'm having the same issue.

@ctavan
Copy link

ctavan commented Dec 22, 2019

@Ridermansb @mmermerkaya @GoktuqCan @CodeByBryan could you check if #2467 matches the issue that you are observing?

@CodeByBryan
Copy link

I am having the issue in a Chrome Extension. when getToken() is called I recieve:

DELETE https://fcmregistrations.googleapis.com/v1/projects/{project_id}/regis.../{FCM_token} 500
FirebaseError: Messaging: A problem occured while unsubscribing the user from FCM: Internal error encountered. (messaging/token-unsubscribe-failed).
(messaging/token-unsubscribe-failed).<

I am not getting any CORS errors

@sahejsingh
Copy link

I do have to say, I just realised that that my issue was specific to getting the token.
The error was: messaging/token-subscribe-failed, http code=401.
whereas this issue is about unsubscribe and http code=500.

@atzzCokeK
Copy link

atzzCokeK commented Jul 13, 2021

For future visitors: Goto Dev Tools -> Application -> Clear storage.

I feel like this issue only takes place when you disable notifications and enable them again. The fact that the service worker is registered again can also be a culprit in some form, but just unregistering the service worker did not solve the problem for me. My firebase version is 7.9.1, so I guess the issue still persists but it does not affect anything critically.

I tried this solution. It is fixed, but when you disable and enable the status for browser notification, it happens again.
thanks @Symasia

@jahooma
Copy link

jahooma commented Sep 20, 2021

Hi y'all,

We've had this problem (or related ones) for a long time. I think I finally got it all working today. This is how.

I believe Firebase messaging is just buggy when you try to register your own service worker instead of providing the firebase-messaging-sw.js file.

So the fix was to create that file and then reference at the end of my own service-worker.js:

importScripts('firebase-messaging-sw.js')

Then you no longer need to pass serviceWorkerRegistration into getToken, simply call:

const token = await messaging.getToken({ vapidKey: config.publicVapidKey })

And it just works!

@Ashatanchik
Copy link

Ashatanchik commented Sep 23, 2021

I'm having exactly the same issue

FirebaseError: Messaging: A problem occurred while unsubscribing the user from FCM

Using "firebase": "8.3.2"

It seems like this issue takes place due to cache errors. So to fix it I am always clearing cache, that's pity :(

Unfortunately I don't have an ability to use firebase-messaging-sw.js, that's why @jahooma method wont work for me

@StefanosGiannakis
Copy link

I'm getting this error on Chrome and not in Firefox. if that helps

@Mwamiq381
Copy link

Mwamiq381 commented Oct 20, 2021

Have the same issue (404) with the 8.3.1 please guide me how can i fix this issue
error

@rockmandash
Copy link

rockmandash commented Dec 19, 2021

I'm using firebase-messaging-sw.js and still can reproduce this bug using @sergdenisov 's two method, so I think @jahooma 's method is not working.

My firebase SDK is 9.6.1

@mohammad-kazemzadeh
Copy link

This issue still persists and only way to "temporarily" solve it is to clear storage.
firebase v9.6.7

@Gubancs
Copy link

Gubancs commented Apr 12, 2022

I get this error also with firebase v9.6.10 in Chrome but not in Firefox!

_FirebaseError: Messaging: A problem occurred while unsubscribing the user from FCM: FirebaseError: Messaging: A problem occurred while unsubscribing the user from FCM: Requested entity was not found. (messaging/token-unsubscribe-failed). (messaging/token-unsubscribe-failed).
at index.esm2017.js:428:29
at Generator.next ()
at asyncGeneratorStep (asyncToGenerator.js:3:1)
at _next (asyncToGenerator.js:25:1)
at _ZoneDelegate.invoke (zone.js:372:1)
at Object.onInvoke (core.mjs:25568:33)
at _ZoneDelegate.invoke (zone.js:371:1)
at Zone.run (zone.js:134:1)
at zone.js:1275:1
at ZoneDelegate.invokeTask (zone.js:406:1)

I can confirm the clearing the application storage on the developer console solves the problem temporarily, but it is not the best solution.

@jorgeroncero
Copy link

This is happening to me aswell with version Firebase JS SDK 9.9.0 wrapped within Flutter Firebase SDK.

It happens really often while testing PWA and browser navigation. It seems like the Firebase SDK is returning an already deleted token no matter what. Even if in the code there is a call to get a new token, it's returning the same invalid token.

@jaysonmulwa
Copy link

Same issue

@jaysonmulwa
Copy link

@srihari9n
Copy link

@jaysonmulwa the comment you posted link to seems not be there anymore. Can you tell what was the solution mentioned in it?

@jaysonmulwa
Copy link

Hi @srihari9n , It's been quite a while, will try to recall what the solution was.

@jswilliams
Copy link

I'm seeing this randomly as well. When this happened back in 2021 it ended up being a backend issue on Google's side that they fixed. See: #5081

I'm wondering if there was a regression and it's happening again?

@jaysonmulwa if you can remember the work around we'd be able to use it as well.

@huynhquangkieu
Copy link

huynhquangkieu commented Feb 15, 2023

Have the same issue (404) with the 8.4.1 version. Found 2 ways to reproduce (2-nd step):

  1. Everything is OK with an app registration and getting a token.
  2. Block notifications, then allow notifications (without reloading a page) OR unregister your service worker in browser settings.
  3. Reload a page.
Screenshot 2021-04-20 at 18 49 38

It still work for me in 2023 ✌️ Thanks Mwamiq381

@Plinpod
Copy link

Plinpod commented Feb 15, 2023

Seeing the same issues on 9.17.1 as well

@crisramb665
Copy link

I'm having the same issue. Version 9.20.1. Actually the error appears when I remove the notification permissions in my browser and try to get a new token then. But still the new token works as expected

@DellaBitta DellaBitta added the bug label Jun 7, 2023
@aungmyatmoethegreat
Copy link

this error is still producing in the firebase version ^9.22.2 and also it should be fixed.

@nickorsk2017
Copy link

Have it

@nickorsk2017
Copy link

Not actual problem.

Just save and check token in database.

@boazblake
Copy link

this is an annoying bug.

@zarqani
Copy link

zarqani commented Aug 5, 2023

the issue is produced in the Firebase version ^10.1.0

@aditivin
Copy link

Still able to reproduce. Why is it taking so long to fix this?

@thiagopg84
Copy link

Any news? 🥲

@windycloud
Copy link

I encountered this error about a month ago, and it was really frustrating. After multiple debugging attempts, I was able to fix it, and I haven't encountered it since. Although I'm not certain about the root cause of this error, I suspect it was triggered by changes in the idToken. Changing the idToken seemed to lead to the issue of unregistering the FCM token. After reviewing the places where getIdTokenResult and getIdToken were used, especially when setting forceRefresh to true, which caused a change in the idToken, the error no longer occurred. I don't recall the details, but the problem seemed to be related to modifying the idToken. I hope this information can help someone else eliminate a similar issue.

@anmolraina25
Copy link

When we update the site permissions from browser settings (while our website is not active), for example, I changed the notification permission to Blocked from Allow, and then back to Allow, now I'd expect to start receiving push notifications (right?). But the fcm v1 api returns 'Requested entity not found'. I believe it's a similar case as resetting the permissions as @thomasmburke has mentioned.

In any case in the source code, the error has been quietly handled. Is there any update here, team firebase?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging a pull request may close this issue.