在firebase functions:shell中,遇到错误:从插件获取元数据失败,错误:invalid_grant

时间:2019-07-14 22:29:56

标签: javascript firebase google-cloud-firestore google-cloud-functions firebase-tools

我正在使用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}` )          
            }
        }
    )

我做错了什么?

1 个答案:

答案 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”


我希望它能对某人有所帮助。