gpt4 book ai didi

android - 使用 cURL 调用 Firebase Cloud Messaging 时出现 "Request had invalid authentication credentials"

转载 作者:行者123 更新时间:2023-12-03 07:54:44 29 4
gpt4 key购买 nike

我正在尝试触发我的 Android 应用程序来接收简单的推送消息。我想使用cURL。我试图遵循 documentation但我收到了 401...这曾经有效,有什么变化吗?

  • 我的服务器 key :AAAArxt...CelsCl
  • 我的 firebase 项目网址:my-project...485(取自“常规”下的网址或“项目 ID”)
  • 我的设备 token :fNBu...eHCAgI

enter image description here

我使用以下代码检索了我的设备 token :

FirebaseMessaging.getInstance().token.addOnSuccessListener { token: String ->
if (!TextUtils.isEmpty(token)) {
Log.d("TAG", "retrieve token successful : $token")
} else {
Log.w("TAG", "token should not be null...")
}
}.addOnFailureListener { e: Exception? -> }.addOnCanceledListener {}
.addOnCompleteListener { task: Task<String> ->
Log.v("TAG", "This is the token : " + task.result)
}

我的 cURL 代码:

curl -X POST -H "Authorization: Bearer AAAArxt...CelsCl" -H "Content-Type: application/json" -d '{
"message":{
"notification":{
"title":"FCM Message",
"body":"This is an FCM Message"
},
"token":"fNBu...eHCAgI"
}}' https://fcm.googleapis.com/v1/projects/my-project...485/messages:send

回应:

{
"error": {
"code": 401,
"message": "Request had invalid authentication credentials. Expected OAuth 2 access token, login cookie or other valid authentication credential. See https://developers.google.com/identity/sign-in/web/devconsole-project.",
"status": "UNAUTHENTICATED"
}
}

创建了 OAuth 2.0 token ,复制了以 ya29 开头的 access_token:

enter image description here

返回 403 错误。它指的是project-752077406211。这对我来说是未知的。我没有看到创建/添加现有项目的选项?

{
"error": {
"code": 403,
"message": "Permission 'cloudmessaging.messages.create' denied on resource '//cloudresourcemanager.googleapis.com/projects/project-7520...211' (or it may not exist).",
"status": "PERMISSION_DENIED",
"details": [
{
"@type": "type.googleapis.com/google.rpc.ErrorInfo",
"reason": "IAM_PERMISSION_DENIED",
"domain": "cloudresourcemanager.googleapis.com",
"metadata": {
"resource": "projects/project-7520...211",
"permission": "cloudmessaging.messages.create"
}
}
]
}
}

最佳答案

如果您使用 FCM HTTP v1 API,请求中的授权承载应为 OAuth 2.0 访问 token ,而不是服务器 key 。

以下是您可以尝试生成 OAuth 2.0 访问 token 的选项:

A) 使用Google Developers OAuth 2.0 Playground

  1. 选择并授权 Firebase Cloud Messaging API v1
  2. 选择https://www.googleapis.com/auth/firebase.messaging作为范围
  3. 点击“授权 API”
  4. 生成授权代码后,将其交换为访问 token
  5. 复制访问 token 并在请求中使用它

B) 使用Firebase Cloud Messaging Node.js Quickstart Project

  1. Install Firebase Admin SDK and Node.js
  2. 下载快速入门项目并按照 README.md 文件中的指南进行操作
  3. 更新index.js并记录访问 token
  4. 复制访问 token 并在请求中使用它

请注意,访问 token 的常见前缀是ya29。

Authorization: Bearer ya29.ElqKBGN2Ri_Uz...HnS_uNreA

最后,您可能还想访问此migration guide从 FCM 旧版 HTTP API 到 FCM HTTP v1 API。

关于android - 使用 cURL 调用 Firebase Cloud Messaging 时出现 "Request had invalid authentication credentials",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76318682/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com