Firebase Admin listProviderConfig无法返回内置身份提供商,如何获取其配置?
Firebase内置身份提供商配置获取方案
核心结论
Firebase Admin SDK的listProviderConfigs()方法仅支持获取自定义OIDC/SAML身份提供商的配置,无法直接返回Google、Twitter、Facebook这类Firebase预集成的内置提供商信息,这是API的设计逻辑决定的。
替代解决方案
1. 确认内置提供商的启用状态
使用admin.auth().getProjectConfig()方法可以获取项目级的身份认证配置,其中包含所有已启用的登录方式(包括内置提供商):
export const getEnabledAuthProviders = https.onRequest((req, res) => { admin.auth().getProjectConfig() .then(projectConfig => { // 过滤出所有内置提供商(排除自定义OIDC/SAML) const builtInProviders = projectConfig.signInOptions.filter(option => { const providerId = option.providerId; return !providerId.startsWith('oidc.') && !providerId.startsWith('saml.'); }); res.json({ allEnabledProviders: projectConfig.signInOptions, builtInProviders }); }) .catch(error => res.status(500).json({ error: error.message })); });
返回结果中,内置提供商的providerId对应固定标识:
- Google:
google.com - Twitter:
twitter.com - Facebook:
facebook.com - 邮箱密码:
password - 匿名登录:
anonymous
2. 获取内置提供商的详细配置(如客户端ID)
目前Firebase Admin SDK没有提供直接API获取内置提供商的详细配置(比如OAuth客户端ID、回调地址等),你需要通过以下方式获取:
- 直接登录Firebase控制台,进入「Authentication」→「登录方法」页面查看对应提供商的配置
- 使用Google Cloud Identity Platform的REST API(需通过Google Cloud Console配置API权限)
关于之前的疑问解答
https.onRequest()与https.onCall()的差异:两者仅请求触发方式不同(前者是标准HTTP接口,后者是Firebase客户端专用的Callable函数),核心的Admin SDK调用逻辑完全一致,不会影响身份提供商相关API的返回结果。- 早期返回空列表的原因:你当时配置的是内置提供商,而
listProviderConfigs({ type: 'oidc' })仅查询自定义OIDC类型的提供商,内置提供商不属于该类型范畴,因此返回空数组;后续添加自定义OIDC/SAML提供商后能正常返回,符合API的设计预期。
内容的提问来源于stack exchange,提问作者Eric
相关产品推荐
相关产品推荐

