Firebase云功能 - createCustomToken

Fra*_*pin 15 firebase google-cloud-functions

将新的Firebase云功能与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)
Run Code Online (Sandbox Code Playgroud)

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

admin.initializeApp(functions.config().firebase);
Run Code Online (Sandbox Code Playgroud)

jwn*_*ngr 38

不幸的是,该createCustomToken()方法需要一个私钥来填充自定义令牌,这些令牌当前不具有默认凭证(恰好是应用程序默认凭据).如使用Firebase管理SDK创建自定义令牌中所述,您需要提供证书凭据才能创建自定义令牌.

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

您可以通过将密钥JSON文件存储在文件/functions夹中来执行此操作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
});
Run Code Online (Sandbox Code Playgroud)

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

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

  • 这个解决方案有效,但使用源代码上传service-account.json是否安全?将那个json存储在firebase配置中怎么样?哪种方式更安全?@坦率-VAN-Puffelen (6认同)
  • 对于未来的读者,这个解决方案不再以这种精确的形式与 1.0.0 云函数 API 一起工作,因为将配置对象传递给 `initializeApp` 的能力已被删除。我在这里问了一个后续问题:/sf/ask/3475950061/ (2认同)