如果我在 requestPermission 之后立即调用 Firebase 的 getToken,我会在控制台中收到错误,为啥?
Posted
技术标签:
【中文标题】如果我在 requestPermission 之后立即调用 Firebase 的 getToken,我会在控制台中收到错误,为啥?【英文标题】:If I call Firebase's getToken right after requestPermission I get an error in the console, why?如果我在 requestPermission 之后立即调用 Firebase 的 getToken,我会在控制台中收到错误,为什么? 【发布时间】:2018-04-18 23:29:35 【问题描述】:如果我在 requestPermission 之后立即调用 Firebase 的 getToken,我会在控制台中收到错误大部分时间。这是我当前的代码:
<script src="https://www.gstatic.com/firebasejs/4.12.1/firebase-app.js"></script>
<script src="https://www.gstatic.com/firebasejs/4.12.1/firebase-messaging.js"></script>
<script>
var config =
apiKey: "XXXXXXXXX",
authDomain: "XXXXXXXXX.firebaseapp.com",
databaseURL: "https://XXXXXXXXX.firebaseio.com",
projectId: "XXXXXXXXX",
storageBucket: "XXXXXXXXX.appspot.com",
messagingSenderId: "XXXXXXXXX"
;
firebase.initializeApp(config);
</script>
<script>
function notification_permission()
messaging.requestPermission().then(function(permission)
console.log('Notification permission granted', permission);
messaging.getToken().then(function(token)
if(token)
//update user token
console.log('Token acquired', token);
else
//you don't have permission to show notifications
).catch(function(err)
//retrieving token failed, analyze the error
console.error('Retrieving token failed', err);
);
).catch(function(err)
console.error('Unable to get permission to notify', err)
);
</script>
如果浏览器已经拥有通知权限并且我调用notification_permission();
,那么我会在控制台中收到令牌,而不会出现任何问题。但是,如果这是用户第一次按 Allow 来授予站点接收通知的权限,则会触发此错误(并非总是如此,但在大多数情况下):
POST https://fcm.googleapis.com/fcm/connect/subscribe 404 ()
Retrieving token failed e code: "messaging/token-subscribe-failed", message: "Requested entity was not found.", stack: "FirebaseError: Requested entity was not found."
Promise.catch (async)
Promise.then (async)
(anonymous) @ VM1243:1
任何想法为什么?谢谢!
【问题讨论】:
遇到这个问题,已经提交了支持请求,会让你知道他们说什么。如果你在 catch 中调用messaging.getToken()
,你可以获得令牌:/
@RobertDaly 很棒的提示,与此同时,我想我会有一个 B 计划来获得令牌值。您能否分享支持请求的链接,以便我跟进回复?谢谢!
他们给了我一个通用的答案,说我需要链接一个应用程序,即使该呼叫在第二次被调用时仍然有效。不过在 4.13.0 中没有这个问题,如下所示!
@RobertDaly 是的,新版本完全避免了这个问题!
【参考方案1】:
尝试最新版本 (4.13.0)。我在发行说明中看到了对此的修复,现在它似乎对我来说可以正常工作。https://firebase.google.com/support/release-notes/js
【讨论】:
感谢更新,我正在测试新版本。 是的,此问题已在 4.13.0 中修复。我与Version 5.8.5
确认(发布日期:2019 年 3 月 1 日)以上是关于如果我在 requestPermission 之后立即调用 Firebase 的 getToken,我会在控制台中收到错误,为啥?的主要内容,如果未能解决你的问题,请参考以下文章
离子 5 / 电容器 @capacitor/motion 坚持 DeviceMotionEvent.requestPermission
通过 requestPermissions() 请求多个权限,但 onRequestPermissionsResult 仅接收单个权限结果
管理员不允许更改时的Android RequestPermission
Activity.requestPermissions 与 ActivityCompat.requestPermissions