Firebase-admin报错‘无对应配置’,如何通过服务账号找项目管理员?
Firebase服务账号相关问题解答
问题描述
接手了一个使用Firebase实现通知功能的客户项目,想要找到项目管理员以获取Firebase项目邀请。目前仅能从客户的AWS上获取到如下格式的Firebase服务账号JSON(“...”为脱敏内容):
{ "type": "service_account", "project_id": "...", "private_key_id": "...", "private_key": "...", "client_email": "...@....iam.gserviceaccount.com", "client_id": "...", "auth_uri": "https://accounts.google.com/o/oauth2/auth", "token_uri": "https://oauth2.googleapis.com/token", "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs", "client_x509_cert_url": "..." }
尝试使用firebase-admin获取所有用户列表,代码如下:
const admin = require('firebase-admin') admin.initializeApp({ databaseURL: 'https://<project-id>.firebaseio.com', credential: admin.credential.cert(require('./firebase.json')), }) ;(async () => { console.log(await admin.auth().listUsers(100)) })()
执行后出现如下错误:
(node:77972) UnhandledPromiseRejectionWarning: Error: There is no configuration corresponding to the provided identifier. at FirebaseAuthError.FirebaseError [as constructor] (.../firebase-test/node_modules/firebase-admin/lib/utils/error.js:44:28) at FirebaseAuthError.PrefixedFirebaseError [as constructor] (.../firebase-test/node_modules/firebase-admin/lib/utils/error.js:90:28) at new FirebaseAuthError (.../firebase-test/node_modules/firebase-admin/lib/utils/error.js:149:16) at Function.FirebaseAuthError.fromServerError (.../firebase-test/node_modules/firebase-admin/lib/utils/error.js:188:16) at .../firebase-test/node_modules/firebase-admin/lib/auth/auth-api-request.js:1665:49 at processTicksAndRejections (internal/process/task_queues.js:95:5) at async .../firebase-test/firebase.js:10:14
疑问:
- 该错误是什么意思?
- 这份凭证JSON是否存在问题?它目前在AWS上用于发送通知。
- 还有什么方法可以通过该JSON获取项目登录邮箱?
解答
1. 错误含义
这个错误说明你的Firebase Admin SDK请求的Auth服务配置不存在,主要有两种可能:
- 填写的
databaseURL对应的Firebase项目未启用Firebase Auth服务; - 当前服务账号没有被授予访问Firebase Auth的权限,或者项目本身未配置Auth模块。
由于该凭证能在AWS上发送通知,说明它仅拥有Cloud Messaging(FCM)的操作权限,没有访问Firebase Auth的权限,因此调用listUsers接口会触发此错误。
2. 凭证JSON是否有问题?
凭证本身是有效的——它能正常发送FCM通知,说明是合规的Firebase服务账号凭证。问题出在账号权限范围有限:该账号仅被配置了FCM相关权限,没有Firebase Auth的访问权限。Firebase服务账号的权限由项目管理员在Google Cloud控制台单独配置,不同服务需要单独授权。
3. 获取项目登录邮箱的方法
仅通过这份服务账号JSON,无法直接获取项目管理员的个人登录邮箱(即创建项目的Google账号邮箱),因为服务账号是独立的身份实体,与管理员个人账号没有直接关联数据。
可以尝试两种间接方式:
- 给该服务账号添加
iam.serviceAccounts.list或projects.getIamPolicy权限后,调用Google Cloud的IAM API,列出项目的所有IAM成员,筛选出拥有Owner或Editor角色的账号,这些通常是项目管理员; - 利用该凭证调用FCM API发送测试通知到自己的设备,若客户的Firebase控制台开启了操作日志,可尝试通过日志溯源,但前提是你能访问控制台——不过当前你没有项目权限,最直接的方式还是联系客户获取项目邀请。
内容的提问来源于stack exchange,提问作者Macks
相关产品推荐
相关产品推荐

