我正在构建一个应用程序,该应用程序将使用Firebase Admin Node.js SDK(https://github.com/firebase/firebase-admin-node和https://firebase.google.com/docs/admin/setup)向移动设备发送推送通知。出于开发目的,我正在使用我自己的Firebase项目中的服务帐户,但打算允许用户使用他们自己的Firebase项目。
为此,我可以获取用户的项目ID,客户端电子邮件和私钥,存储它们并在用户想要发送电子邮件时使用它们来初始化Admin对象:
admin.initializeApp({
credential: admin.credential.cert({
projectId: "<PROJECT_ID>",
clientEmail: "foo@<PROJECT_ID>.iam.gserviceaccount.com",
privateKey:"-----BEGIN PRIVATE KEY-----\n<KEY>\n-----END PRIVATE KEY-----\n"
}),
databaseURL: "https://<DATABASE_NAME>.firebaseio.com"
});
但我不想将这些数据保存在我的数据库中,以及让用户更容易对我的应用进行身份验证,因此我正在探索使用Google OAuth2刷新令牌初始化管理对象的可能性:< / p>
var refreshToken; // Get refresh token from OAuth2 flow
admin.initializeApp({
credential: admin.credential.refreshToken(refreshToken),
databaseURL: 'https://<DATABASE_NAME>.firebaseio.com'
});
我的问题是,使用这种方式,如何配置凭据以使用特定的Firebase项目(例如上面的admin.credential.cert方法中的projectId:&#34; PROJECT_ID&#34;)?
我在admin.credential(https://firebase.google.com/docs/reference/admin/node/admin.credential)的参考文档中看到,它说“刷新令牌凭据不授予对每个管理API的访问权限”。 是否可以将此流用于Firebase云消息传递,如果没有,推荐的前进方式是什么?