首页 文章

Firebase Cloud 功能 - createCustomToken

提问于
浏览
15

将新的Firebase Cloud 功能与admin sdk结合使用 .

我想使用admin.auth() . createCustomToken()函数 . 调用此函数会导致错误消息

Error: createCustomToken() requires a certificate with "private_key" set.
    at FirebaseAuthError.Error (native)
    at FirebaseAuthError.FirebaseError [as constructor] (/user_code/node_modules/firebase-admin/lib/utils/error.js:25:28)
    at new FirebaseAuthError (/user_code/node_modules/firebase-admin/lib/utils/error.js:90:23)
    at FirebaseTokenGenerator.createCustomToken (/user_code/node_modules/firebase-admin/lib/auth/token-generator.js:62:19)
    at Auth.createCustomToken (/user_code/node_modules/firebase-admin/lib/auth/auth.js:89:37)
    at /user_code/index.js:29:26
    at process._tickDomainCallback (internal/process/next_tick.js:129:7)

如何配置 Cloud 功能以使用private_key?

admin.initializeApp(functions.config().firebase);

2 回答

  • 0

    如上所述:https://firebase.google.com/docs/auth/admin/create-custom-tokens?authuser=0

    要在本地测试相同的代码,请下载服务帐户JSON文件并将GOOGLE_APPLICATION_CREDENTIALS环境变量设置为指向它 .

    然后在你的代码中:

    admin.initializeApp();

  • 36

    不幸的是,createCustomToken()方法需要一个私钥来编写自定义令牌,这些令牌当前不具有默认凭证(恰好是Application Default Credential) . 如Create custom tokens using the Firebase Admin SDKs中所述,您需要提供证书凭据才能创建自定义令牌 .

    您可以按照Add Firebase to your app中的说明生成此凭据所需的证书 . 获得密钥JSON文件后,您需要将其加入Cloud Functions for Firebase .

    您可以通过将_CA5893_文件夹中的密钥JSON文件存储为 service-account.json 来执行此操作 . 然后,在您定义函数的文件中,使用admin.credential.cert()初始化Admin SDK,如下所示:

    const functions = require('firebase-functions');
    const admin = require('firebase-admin');
    
    var serviceAccount = require("./service-account.json");
    admin.initializeApp({
      credential: admin.credential.cert(serviceAccount),
      databaseURL: functions.config().firebase.databaseURL
    });
    

    有关如何执行此操作的完整示例,请使用更详细的说明和代码示例,请查看Instagram sign in sample .

    请注意,我们希望将来从默认凭据添加对 createCustomToken() 的支持,但是现在,您必须为此特定方法带来自己的凭据才能工作 .

相关问题