Firebase云消息传递:请求缺少必需的身份验证凭证

时间:2020-06-24 02:26:30

标签: javascript vue.js firebase-cloud-messaging nuxt.js

我正在努力让Firebase Cloud Messaging SDK与Nuxt JS一起使用

我一直在获取“检索令牌时发生错误。FirebaseError:消息传递:在向用户订阅FCM时发生问题:请求缺少必需的身份验证凭据。预期的OAuth 2访问令牌,登录cookie或其他有效的身份验证凭据。”

这是我作为nuxt.config.js中的一个插件运行的fcm.js中的代码

import firebase from "../firebase/init";

firebase
  .messaging()
  .usePublicVapidKey(
    "BDYE2EYHdIp8qHjTKcJYPvO4PgaAH2pSruP55FOtNs5jWsgdeg7YK6OgJ0daSu21kN7aSzU19NRXRqC4bfITZYQ "
  );

firebase
  .messaging()
  .getToken()
  .then((currentToken) => {
    console.log(currentToken);
    if (currentToken) {
      sendTokenToServer(currentToken);
      updateUIForPushEnabled(currentToken);
    } else {
      // Show permission request.
      console.log(
        "No Instance ID token available. Request permission to generate one."
      );
      // Show permission UI.
      updateUIForPushPermissionRequired();
      setTokenSentToServer(false);
    }
  })
  .catch((err) => {
    console.log("An error occurred while retrieving token. ", err);
    showToken("Error retrieving Instance ID token. ", err);
    setTokenSentToServer(false);
  });

同时,如果您想知道用户是否已通过身份验证。该用户肯定已通过身份验证,因为我可以访问受保护的页面中的Firestore数据和路由,并且可以在vuex存储中看到UID详细信息。所以那边没有问题。我也尝试过删除usePublicVapidKey()行,它也行不通。

谢谢。

1 个答案:

答案 0 :(得分:1)

发现问题

firebase
  .messaging()
  .usePublicVapidKey(
    "BDYE2EYHdIp8qHjTKcJYPvO4PgaAH2pSruP55FOtNs5jWsgdeg7YK6OgJ0daSu21kN7aSzU19NRXRqC4bfITZYQ "
  );

在Firebase控制台中,密钥对旁边显示一个复制按钮。单击并粘贴...时,它将在密钥对的末尾添加一个随机空间。