我将firebase-admin用于nodejs(版本7.3.0)发送推送 通知。对于使用sendAll方法发送的40k条不同的消息,服务器通常会收到此错误:
”通过“凭证”提供给initializeApp()的凭证实现 属性无法使用提取有效的Google OAuth2访问令牌 出现以下错误:“获取访问令牌时出错:发出请求时出错: 套接字挂断。错误代码:ECONNRESET”。
有时效果很好,但并非一直如此。
var admin = require('firebase-admin');
serviceAccount = require('/path_json_adminsdk/yyyyyyyyyy.json');
var defaultApp = admin.initializeApp({
credential: admin.credential.cert(serviceAccount),
databaseURL: 'https://api-project-yyyyyy'
});
var k = 42000;
var contorMessages = 0;
var messages = [];
for(var i=0;i <em><</em> k; i++){
//.......
contorMessages = contorMessages + 1;
var tmp = {
alert: body.alert,
payload: body.payload
};
//form the array to be sent
messages.push({
data: {"body": JSON.stringify(tmp)},
token: body.token
});
if(contorMessages == 100){
SEDispatcher.emit('sendMessageFirebaseMulticast',messages);
contorMessages = 0;
messages = [];
}
}
SEDispatcher.on('sendMessageFirebaseMulticast', function(messages){
var dryRun = true;
admin.messaging().sendAll(messages, dryRun)
.then(function(response) {
//console.log("response:",response);
//responses = response.responses;
//.......
})
.catch((error) => {
console.log(' +++ Error sending message:', error);
});
});
有时会发生的错误:
+++发送消息时出错:{错误:通过“ credential”属性提供给initializeApp()的凭据实现未能获取 有效的Google OAuth2访问令牌,并显示以下错误:“错误 提取访问令牌:发出请求时出错:套接字挂起。 错误代码:ECONNRESET”。 在FirebaseAppError.Error(本机) 在FirebaseAppError.FirebaseError [作为构造函数](/opt/node/test/node_modules/firebase-admin/lib/utils/error.js:42:28) 在FirebaseAppError.PrefixedFirebaseError [作为构造函数](/opt/node/test/node_modules/firebase-admin/lib/utils/error.js:88:28) 在新的FirebaseAppError(/opt/node/test/node_modules/firebase-admin/lib/utils/error.js:122:28) 在/opt/node/test/node_modules/firebase-admin/lib/firebase-app.js:121:23 在process._tickCallback(内部/进程/next_tick.js:103:7)处errorInfo:{代码:'app / invalid-credential', 消息:“通过“ credential”属性提供给initializeApp()的凭据实现无法获取有效的Google OAuth2 具有以下错误的访问令牌:“获取访问令牌时出错: 发出请求时出错:套接字挂起。错误代码:ECONNRESET”。 },codePrefix:“ app”}