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

问题描述 投票:0回答:8

在 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"
    }
});

我收到错误:

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"
      }
    ]
  }
}"

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

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

  • 对于

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

  • 至于

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

身份验证/未经授权的域

如果应用程序域未获得 Firebase 项目的 OAuth 操作授权,则抛出此错误。从 Firebase 控制台编辑授权域列表。

有没有人有关于此错误的更多详细信息,可以帮助我深入了解它?

firebase firebase-authentication firebase-cloud-messaging
8个回答
37
投票

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

在“设置”>“常规”>“您的应用程序”>“iOS 应用程序”中找到:

  • 应用商店ID
  • 捆绑包ID
  • 团队ID

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

  • 团队 ID(应根据上面的 ios 应用程序信息自动设置)
  • 密钥 ID(通常是密钥的名称,最好在创建时抓住)


6
投票

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

这就是为我解决的问题:

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


1
投票

我也有同样的问题。罪魁祸首是小写 APNs teamId。改成大写就解决了。


1
投票

仔细检查是否已在 Firebase 控制台上上传了 apns 密钥。这就是我的情况。


0
投票

如果其他一切都失败,请尝试创建新的 Firebase 项目并为其设置推送通知。

出于我们的目的,我们仅使用 firebase 发送推送通知,因此这是有效的。如果您将其用于其他用途,您可以将推送通知仍然分离到单独的项目中,并通过例如HTTP-requests调用它。

由于某种未知原因,我们的一个项目无法发送推送通知,已通过重新创建 firebase 项目修复了该问题。


0
投票

想补充一下为什么这可能发生在 ios 上的另一个原因。他们正在升级到钥匙。因此,如果您有证书,在您进行调试时,它可能仍然可以工作到 2024 年 5 月,但启动时它将无法推送通知。
在苹果开发控制台证书,标识符和配置文件 - >密钥 - > +然后检查 apns
在 firebase ios 中上传该密钥,您将看到一条通知,它将自动禁用证书。


0
投票

我已经尝试了这篇文章中的所有内容,但一周都没有效果。终于找到错误了,分享一下。

结果,@Seph Reed 是对的。 APNS 或 Web 推送服务错误的身份验证错误的原因基于以下更正:

应用商店 ID
捆绑包 ID
团队ID

事实证明,问题出在Bundle ID

在 Xcode 中的“签名和功能”下,您可以在多个位置输入捆绑包标识符。
最上面的Bundle Identifier保持原样,环境变量是在react-native中创建项目时自动生成的。该部分也需要更正。

下图显示了它最终的样子

© www.soinside.com 2019 - 2024. All rights reserved.