小编dub*_*nev的帖子

“来电者无权”尝试使用 Firebase Admin SDK 创建自定义令牌

错误

打电话时,admin.auth().createCustomToken()我收到以下错误:

Error: The caller does not have permission; Please refer to https://firebase.google.com/docs/auth/admin/create-custom-tokens for more details on how to use and troubleshoot this feature.

提供的文档让我相信我用来初始化 Firebase Admin SDK 的服务帐户没有足够的权限。我不相信是这种情况,所以我想问一下,看看我是否遗漏了什么。

配置

Firebase Admin SDK 在后端初始化,如下所示:

admin.initializeApp({
  serviceAccountId: 'firebase-adminsdk-xxxxx@my-project-id.iam.gserviceaccount.com'
});
Run Code Online (Sandbox Code Playgroud)

从技术上讲,该值是从 env var 引用的,但我已确认此值是正确的。

正在使用的服务帐户具有以下角色:

roles/firebase.sdkAdminServiceAgent
roles/iam.serviceAccountTokenCreator
Run Code Online (Sandbox Code Playgroud)

根据文档,创建自定义令牌所需的权限是iam.serviceAccounts.signBlob. iam.serviceAccountTokenCreator根据此输出,此权限是角色的一部分:

? gcloud beta iam roles describe roles/iam.serviceAccountTokenCreator
description: Impersonate service accounts (create OAuth2 access tokens, sign blobs
  or JWTs, etc).
etag: AA==
includedPermissions:
- iam.serviceAccounts.get
- iam.serviceAccounts.getAccessToken
- …
Run Code Online (Sandbox Code Playgroud)

node.js firebase google-kubernetes-engine firebase-authentication firebase-admin

13
推荐指数
1
解决办法
2616
查看次数