Firebase Messaging v1 401 Project Not Permitted 错误
Firebase Messaging v1 401 Project Not Permitted error
我是 运行 带有 firebase admin sdk 的节点服务器。但是,每次我尝试从服务器发送推送通知时,都会收到 401 错误。
这是我得到的确切错误:
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>PROJECT_NOT_PERMITTED</TITLE>\n' +
'</HEAD>\n' +
'<BODY BGCOLOR="#FFFFFF" TEXT="#000000">\n' +
'<H1>PROJECT_NOT_PERMITTED</H1>\n' +
'<H2>Error 401</H2>\n' +
'</BODY>\n' +
'</HTML>\n' +
'". Status code: 401.'
},
codePrefix: 'messaging'
我不太确定为什么我没有该项目的权限。我已经设置了我的服务帐户,并下载了 .json 文件。我什至进入了 gcloud 平台并尝试添加任何看起来正确的权限。以下是与我的服务帐户关联的所有权限:
我是本地的运行服务器,初始化应用是这样的:
const admin = require('firebase-admin');
const messaging = require('firebase-admin/messaging');
const serviceAccount = require('<path-to-key>');
const fbApp = admin.initializeApp({
credential: admin.credential.cert(serviceAccount),
projectId: '<PROJECT_ID>',
databaseURL: '<DB_URL>'
});
我不确定还能做什么,因为我已经多次查看 v1 文档,但仍然不知道我缺少什么权限。我什至确保“firebase 登录”到正确的 google 帐户,看看这是否是个问题。
这是我发送消息的代码:
const sendPushNotifications2 = async (topic, reminder) => {
const payload = genPayload2(reminder);
//await messaging.getMessaging(fbApp).sendToTopic(topic, payload);
await admin.messaging(fbApp).sendToTopic(topic, payload);
};
我已经验证了 .json 文件中的 client_id、client_email 和 private_key_id 值。我还没有验证 private_key 属性 因为我不确定在哪里可以找到它。
原来我禁用了这个 API:“Firebase In-App 消息传递 API”
原来这个问题之前也有人问过,但是没找到。 Here's the answer
如果其他人遇到此问题,这是我的解决方法:
- 前往google云平台网站
- 转到
APIs and Services
- 转到
Enabled APIs & Services
- 点击
+ Enable APIs and Services
- 搜索
Firebase In-App Messaging API
并确保它已启用。
您也可以只搜索消息并确保所有云消息 API 都已启用。
我是 运行 带有 firebase admin sdk 的节点服务器。但是,每次我尝试从服务器发送推送通知时,都会收到 401 错误。
这是我得到的确切错误:
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>PROJECT_NOT_PERMITTED</TITLE>\n' +
'</HEAD>\n' +
'<BODY BGCOLOR="#FFFFFF" TEXT="#000000">\n' +
'<H1>PROJECT_NOT_PERMITTED</H1>\n' +
'<H2>Error 401</H2>\n' +
'</BODY>\n' +
'</HTML>\n' +
'". Status code: 401.'
},
codePrefix: 'messaging'
我不太确定为什么我没有该项目的权限。我已经设置了我的服务帐户,并下载了 .json 文件。我什至进入了 gcloud 平台并尝试添加任何看起来正确的权限。以下是与我的服务帐户关联的所有权限:
我是本地的运行服务器,初始化应用是这样的:
const admin = require('firebase-admin');
const messaging = require('firebase-admin/messaging');
const serviceAccount = require('<path-to-key>');
const fbApp = admin.initializeApp({
credential: admin.credential.cert(serviceAccount),
projectId: '<PROJECT_ID>',
databaseURL: '<DB_URL>'
});
我不确定还能做什么,因为我已经多次查看 v1 文档,但仍然不知道我缺少什么权限。我什至确保“firebase 登录”到正确的 google 帐户,看看这是否是个问题。
这是我发送消息的代码:
const sendPushNotifications2 = async (topic, reminder) => {
const payload = genPayload2(reminder);
//await messaging.getMessaging(fbApp).sendToTopic(topic, payload);
await admin.messaging(fbApp).sendToTopic(topic, payload);
};
我已经验证了 .json 文件中的 client_id、client_email 和 private_key_id 值。我还没有验证 private_key 属性 因为我不确定在哪里可以找到它。
原来我禁用了这个 API:“Firebase In-App 消息传递 API” 原来这个问题之前也有人问过,但是没找到。 Here's the answer
如果其他人遇到此问题,这是我的解决方法:
- 前往google云平台网站
- 转到
APIs and Services
- 转到
Enabled APIs & Services
- 点击
+ Enable APIs and Services
- 搜索
Firebase In-App Messaging API
并确保它已启用。
您也可以只搜索消息并确保所有云消息 API 都已启用。