我正在使用Firebase 7.0.0。使用firebase functions:shell
时,每当尝试get()
文档或集合中的listDocuments()
时,都会收到以下错误,没有更多信息:“错误:从插件获取元数据失败,并显示错误: invalid_grant”。请注意,将相同的代码部署到Firebase Cloud Functions时,所有功能都可以正常工作。
import * as functions from 'firebase-functions'
import * as firebase from 'firebase-admin'
try { firebase.initializeApp() } catch ( error ) { }
exports = module.exports = functions.https.onRequest(
async ( request: functions.https.Request, response: functions.Response ) => {
if ( request.method === 'POST' ) {
await firebase.firestore().collection( `users` )
.listDocuments()
.then( ( documents: FirebaseFirestore.DocumentReference[] ) => {
for ( const document of documents ) {
console.log( `Found ${document.id}`)
}
response.status( 200 ).end()
}
)
.catch( ( error: any ) => {
console.error( `List failed: ${error}` )
response.status( 405 ).end()
}
)
}
else {
console.error( `Unexpected ${request.method}` )
}
}
)
我做错了什么?
答案 0 :(得分:0)
我遇到了同样的错误。 “错误:400未定义:从插件获取元数据失败,错误:invalid_grant”。
在我的情况下,问题出在firebase.initializeApp()。 我当时正在使用firebase函数执行2project,而当我仅执行一个项目时并没有什么问题,但是当我尝试测试2project而未通过服务帐户凭据时,它就开始发生。 因此,我必须创建firebase提供的私钥并应用它。
我在Firebase项目控制台中的[设置]> [服务帐户]下方进行了检查,并按照说明进行操作,
var admin = require("firebase-admin");
var serviceAccount = require("path/to/serviceAccountKey.json");
admin.initializeApp({
credential: admin.credential.cert(serviceAccount),
databaseURL: "https://faucet-office.firebaseio.com"
});
https://firebase.google.com/docs/admin/setup?authuser=0是有关将Firebase Admin SDK添加到服务器的官方文档链接。 它建议另一种方法。
export GOOGLE_APPLICATION_CREDENTIALS =“ / home / user / Downloads / service-account-file.json”
我希望它能对某人有所帮助。