ID.me 对接Firebase OIDC身份验证失败求助
ID.me 对接Firebase OIDC身份验证失败求助
先贴出你当前使用的代码:
protected async onOAuthProviderClick() { const provider = new OAuthProvider('oidc.idme'); provider.addScope('openid'); try { await signInWithRedirect(getAuth(), provider); } catch (error) { if (error instanceof FirebaseError) { this.#snacks.open(`Error signing in with ID.me: ${error.message}`); } else { this.#snacks.open( 'An unknown error occurred while signing in with ID.me' ); } if (isDevMode()) console.error(error); } }
看起来你在Firebase里配置ID.me的OIDC登录时碰到了卡壳的客户端认证问题,我来帮你梳理几个针对性的排查方向,结合你提到的沙箱环境和错误信息来分析:
先复盘下你已经做的操作,确保没遗漏关键细节:
- 在Firebase控制台创建了OIDC提供商,反复核对了Client ID和Client Secret
- 已经把Firebase的回调URL添加到ID.me沙箱应用的重定向URI列表里
- 尝试过多种Scope组合:
openid、login、profile的不同搭配 - 目前卡在ID.me沙箱的授权页面,收到错误:
Client authentication failed due to unknown client, no client authentication included, or unsupported authentication information
核心排查方向(按优先级排序)
优先匹配客户端认证方式
ID.me的OIDC服务对客户端认证方式有明确要求,Firebase默认的OIDC配置可能用的是client_secret_basic,但沙箱环境下ID.me可能要求用client_secret_post或者其他方式。你需要:- 确认ID.me沙箱支持的客户端认证方法
- 回到Firebase控制台的OIDC提供商配置页,找到客户端认证方法选项,设置成和ID.me沙箱要求一致的方式
抠细节核对基础配置
- Issuer URL必须是ID.me沙箱的正确地址:
https://api.idmelabs.com,检查有没有拼写错误,比如多打了斜杠或者字符 - 别嫌麻烦,手动输入一遍Client ID和Client Secret,避免复制粘贴时带了空格、换行这类隐形字符
- 确保Firebase的重定向URI和ID.me沙箱里配置的完全一致,包括大小写、末尾是否带斜杠,比如Firebase生成的回调URL一般是
https://<你的项目ID>.firebaseapp.com/__/auth/handler,要原封不动复制过去
- Issuer URL必须是ID.me沙箱的正确地址:
先解决认证问题,再调Scope
从错误信息来看,现在的问题还停留在客户端身份验证阶段,还没到请求Scope的环节,所以先把认证问题解决,等能正常进入授权页面后再调整Scope。不过可以提前确认ID.me沙箱支持的Scope列表,确保后续请求的Scope是合法的。用Firebase工具辅助排查
打开Firebase控制台的认证日志,查看是否有更详细的请求日志,比如客户端ID是否正确传递给了ID.me;也可以用Firebase的认证模拟器在本地测试OIDC流程,看看能不能复现问题并获取更多调试信息。
希望这些方向能帮你解决问题,顺利在沙箱环境里跑通ID.me的登录流程!
内容来源于stack exchange
相关产品推荐
相关产品推荐

