如何从Firebase函数中使用FCM

如何从Firebase函数中使用FCM,firebase,firebase-cloud-messaging,Firebase,Firebase Cloud Messaging,我试图从firebase函数中发送FCM,但每次都会出现以下错误: await admin.messaging().sendToDevice(registrationToken, message) 我听从了他的建议,没有任何帮助。指向本文中的另一个链接并没有多大帮助,因为我正在使用Firebase Server 这篇文章,同样的,我使用同样的代码(FCM代码),同样的错误 这是全部错误: Error sending message: { Error: An error occurred whe

我试图从firebase函数中发送FCM,但每次都会出现以下错误:

await admin.messaging().sendToDevice(registrationToken, message)
我听从了他的建议,没有任何帮助。指向本文中的另一个链接并没有多大帮助,因为我正在使用Firebase Server

这篇文章,同样的,我使用同样的代码(FCM代码),同样的错误

这是全部错误:

Error sending message: { Error: An error occurred when trying to authenticate to the FCM servers. Make sure the credential used to authenticate this SDK has the proper permissions. See https://firebase.google.com/docs/admin/setup for setup instructions. Raw server response: "<HTML>
<HEAD>
<TITLE>Unauthorized</TITLE>
</HEAD>
<BODY BGCOLOR="#FFFFFF" TEXT="#000000">
<H1>Unauthorized</H1>
<H2>Error 401</H2>
</BODY>
</HTML>
". Status code: 401.
    at FirebaseMessagingError.FirebaseError [as constructor] (/workspace/node_modules/firebase-admin/lib/utils/error.js:43:28)
    at FirebaseMessagingError.PrefixedFirebaseError [as constructor] (/workspace/node_modules/firebase-admin/lib/utils/error.js:89:28)
    at new FirebaseMessagingError (/workspace/node_modules/firebase-admin/lib/utils/error.js:255:16)
    at Object.createFirebaseError (/workspace/node_modules/firebase-admin/lib/messaging/messaging-errors-internal.js:57:12)
    at /workspace/node_modules/firebase-admin/lib/messaging/messaging-api-request-internal.js:78:51
    at process._tickCallback (internal/process/next_tick.js:68:7)
  errorInfo:
   { code: 'messaging/authentication-error',
     message:
      'An error occurred when trying to authenticate to the FCM servers. Make sure the credential used to authenticate this SDK has the proper permissions. See https://firebase.google.com/docs/admin/setup for setup instructions. Raw server response: "<HTML>\n<HEAD>\n<TITLE>Unauthorized</TITLE>\n</HEAD>\n<BODY BGCOLOR="#FFFFFF" TEXT="#000000">\n<H1>Unauthorized</H1>\n<H2>Error 401</H2>\n</BODY>\n</HTML>\n". Status code: 401.' },
  codePrefix: 'messaging' } 
发送消息时出错:{错误:尝试对FCM服务器进行身份验证时出错。请确保用于验证此SDK的凭据具有正确的权限。请参阅https://firebase.google.com/docs/admin/setup 获取安装说明。原始服务器响应:”
未经授权
未经授权
错误401
“。身份代码:401。
在FirebaseMessagingError.FirebaseError[作为构造函数](/workspace/node_modules/firebase admin/lib/utils/error.js:43:28)
在FirebaseMessagingerError.PrefixedFereBaseError[作为构造函数](/workspace/node_modules/firebase admin/lib/utils/error.js:89:28)
在新的FirebaseMessagingerError(/workspace/node_modules/firebase admin/lib/utils/error.js:255:16)
在Object.createFirebaseError(/workspace/node_modules/firebase admin/lib/messaging/messaging errors internal.js:57:12)
at/workspace/node_modules/firebase admin/lib/messaging/messaging api request internal.js:78:51
在进程中。_tick回调(内部/process/next_tick.js:68:7)
错误信息:
{代码:'消息传递/身份验证错误',
信息:
'尝试对FCM服务器进行身份验证时出错。请确保用于验证此SDK的凭据具有正确的权限。请参阅https://firebase.google.com/docs/admin/setup 对于安装说明。原始服务器响应:“\n\nUnauthorized\n\n\nUnauthorized\n错误401\n\n”。状态代码:401'.},
codePrefix:“消息传递”}

好的,不相关但相关的我找到了答案

基本上,按照说明添加

Firebase管理员

到您的.gserviceaccount.com帐户。

我是如何解决的:

  • 转到并选择您的项目
  • 它将显示帐户列表。点击账户something@appspot.gserviceaccount.com
  • 选择选项卡“键”。生成一个新密钥并将其作为JSON下载
  • 最后,使用函数.cert()将生成的JSON添加到项目中:
  • 这仅用于测试,请记住在部署功能时删除凭据

    admin.initializeApp({
    凭证:admin.credential.cert(
    “route/to/generatedJSON.json”
    ),
    });
    const messaging=admin.messaging()