You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter应用中Firebase OIDC(Keycloak)认证报错及iOS崩溃问题

Flutter 集成 Firebase OIDC(Keycloak)认证问题排查与解决

初始错误:[firebase_auth/unknown] null

核心排查点

  • Firebase自定义OIDC提供商未配置:
    必须在Firebase控制台完成Keycloak的自定义OIDC配置:
    1. 进入「认证」→「登录方法」→ 添加提供方 → 选择「自定义OIDC」
    2. 填入Keycloak的Issuer URL(https://你的Keycloak域名/realms/你的Realm名)、客户端ID,保存配置
  • 凭证参数不完整:
    使用OAuthProvider.credential时,除idToken外,建议补充accessToken和rawNonce(若请求Keycloak令牌时使用了nonce):
OAuthCredential oAuthCredential = OAuthProvider(Constants.PROVIDER_ID)
    .credential(
      idToken: idToken,
      accessToken: accessToken,
      rawNonce: nonce,
    );
  • Keycloak令牌有效性:
    确认Keycloak返回的idToken是标准JWT,且包含sub、iss、aud等Firebase要求的核心声明

iOS端崩溃问题(切换signInWithProvider后)

崩溃原因与修复方案

从崩溃日志分析,问题源于iOS端Firebase Auth插件未正确识别自定义OIDC配置,需完成以下操作:

  1. 配置Info.plist:
    打开iOS项目的Info.plist,添加以下内容(替换为你的实际信息):
<key>CFBundleURLTypes</key>
<array>
  <dict>
    <key>CFBundleTypeRole</key>
    <string>Editor</string>
    <key>CFBundleURLSchemes</key>
    <array>
      <string>com.googleusercontent.apps.你的Firebase客户端ID</string>
      <string>keycloak.你的Keycloak客户端ID</string>
    </array>
  </dict>
</array>
<key>FirebaseAuthCustomOAuthProviders</key>
<array>
  <string>${PROVIDER_ID}</string> <!-- 对应Constants.PROVIDER_ID的值 -->
</array>
  1. 更新依赖版本:
    将iOS端Firebase Auth SDK和Flutter的firebase_auth插件更新到最新稳定版,旧版本存在自定义OIDC兼容性BUG
  2. 清理项目缓存:
    执行flutter clean后重新编译运行iOS项目

关键注意事项

  • PROVIDER_ID必须与Firebase控制台配置的自定义OIDC提供商ID完全一致
  • Keycloak客户端需将Firebase回调URL(https://你的Firebase项目ID.firebaseapp.com/__/auth/handler)添加到「Valid Redirect URIs」列表中

内容的提问来源于stack exchange,提问作者Devendra

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 00:02:02