Firebase 错误:来自 APNS 或 Web 推送服务的身份验证错误

Sep*_*eed 18 firebase firebase-authentication firebase-cloud-messaging

在 node-js 中运行以下行后:

import * as admin from "firebase-admin";
import * as serviceAccount from "../../firebase_service_account_key.json";

const app = admin.initializeApp({
  credential: admin.credential.cert(serviceAccount as any),
  databaseURL: "https://my-app-path.firebaseio.com"
});

admin.messaging().send({
    token: "known-good-token",
    notification: {
        title: "Test Push Note",
        body: "Here is some text"
    }
});
Run Code Online (Sandbox Code Playgroud)

我收到错误:

Error: Auth error from APNS or Web Push Service 
Raw server response: 
"{
  "error":{
    "code":401,
    "message":"Auth error from APNS or Web Push Service",
    "status":"UNAUTHENTICATED",
    "details"[
      {
        "@type":"type.googleapis.com/google.firebase.fcm.v1.FcmError",
        "errorCode":"THIRD_PARTY_AUTH_ERROR"
      },
      {
        "@type":"type.googleapis.com/google.firebase.fcm.v1.ApnsError",
        "statusCode":403,
        "reason":"InvalidProviderToken"
      }
    ]
  }
}"
Run Code Online (Sandbox Code Playgroud)

我在 Firebase 的“设置”>“云消息传递”部分下向我的 ios 项目添加了“APNs 身份验证密钥”。我还正确下载并导入了我的服务帐户 json 文件。

在研究方面,我尝试查找错误。

  • 对于InvalidProviderToken错误,这个答案似乎表明我使用的是旧令牌。这是完全可能的,但我的应用程序和数据库上的日志似乎匹配,所以它似乎不正确。

  • 至于THIRD_PARTY_AUTH_ERROR,谷歌没有给我任何点击。我发现的最接近的是this,以下文字可能是罪魁祸首(编辑:这不是问题):

授权/未授权域

如果应用域未被授权进行 Firebase 项目的 OAuth 操作,则抛出。从 Firebase 控制台编辑授权域列表。

有没有人有关于这个错误的更多细节,这可能有助于我深入了解它?

Sep*_*eed 17

如果您的 iOS 应用设置存在以下任何一项错误,则会出现此错误:

可在设置 > 通用 > 您的应用程序 > iOS 应用程序中找到:

  • 应用商店 ID
  • 捆绑 ID
  • 团队标识

在此处输入图片说明

添加 APNs 密钥时(上传到云消息传递 > APNs 身份验证密钥):

  • 团队 ID(应根据上面的 ios 应用信息自动设置)
  • Key Id(通常在key的名字中,最好在创建时抓取)

在此处输入图片说明

  • 作为附加评论(b/c 我花了几分钟才弄明白),您需要将生成的 APNs 密钥上传到 Cloud Messaging => APNs Authentication Key (5认同)

Reb*_*per 5

前几天一切都对我有用,所以所有设置都很好。但今天我收到了这个错误。

这就是为我解决的问题:

  1. 已撤销 APN 密钥
  2. 创建了新的并下载了它
  3. 删除旧的并将其上传到 Firebase 仪表板/设置/云消息传递
  4. 转到“设置/服务帐户”并生成新的私钥
  5. 将其添加到我的 Cloud Functions 项目中(在我的示例中将其重命名为 service-account.json)
  6. 保存文件并部署功能:firebase deploy --only functions