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

启用Firebase AppCheck的Google Identity for iOS后登录失败求助

问题分析与解决方案

核心问题原因

Android端Firebase Auth的AppCheck强制校验能覆盖Google登录,是因为Android上Google登录与Firebase Auth的集成路径会自动携带AppCheck令牌;但iOS上的Google登录是直接调用Google Identity服务,不属于Firebase Auth(Beta)校验的覆盖范围,所以需要单独开启“Google Identity for iOS”的强制校验,且必须额外配置让Google登录请求携带AppCheck令牌,否则就会触发校验失败。

具体修复步骤

1. 完善Flutter依赖与iOS端AppCheck初始化

首先确保pubspec.yaml中添加了firebase_app_check依赖,执行flutter pub get完成安装。

然后修改AppDelegate.swift,补充AppCheck初始化逻辑,关键是为Google Identity配置AppCheck令牌传递机制:

import UIKit
import Flutter
import Firebase
import FirebaseAppCheck
import GoogleSignIn

@UIApplicationMain
@objc class AppDelegate: FlutterAppDelegate {
  override func application(
    _ application: UIApplication,
    didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
  ) -> Bool {
    FirebaseApp.configure()
    
    // 初始化AppCheck,调试环境用DebugProvider,正式环境替换为AppleDeviceCheckProvider()
    let provider = AppCheckDebugProvider()
    AppCheck.setAppCheckProviderFactory(provider)
    
    // 绑定Google登录客户端与Firebase配置,确保请求携带AppCheck令牌
    GIDSignIn.sharedInstance().clientID = FirebaseApp.app()?.options.clientID
    GIDSignIn.sharedInstance().delegate = self
    
    GeneratedPluginRegistrant.register(with: self)
    return super.application(application, didFinishLaunchingWithOptions: launchOptions)
  }
}

// 实现Google登录代理,完成Firebase Auth凭证转换
extension AppDelegate: GIDSignInDelegate {
  func sign(_ signIn: GIDSignIn!, didSignInFor user: GIDGoogleUser!, withError error: Error!) {
    if let error = error {
      // 处理登录错误逻辑
      return
    }
    
    guard let auth = user.authentication else { return }
    let credential = GoogleAuthProvider.credential(withIDToken: auth.idToken,
                                                   accessToken: auth.accessToken)
    
    Auth.auth().signIn(with: credential) { _, error in
      if let error = error {
        // 处理Firebase Auth登录错误
        return
      }
      // 登录成功后的业务逻辑
    }
  }
}

2. 验证调试环境配置

由于你使用的是Xcode模拟器,需确认:

  • Firebase控制台中添加的调试令牌未过期,且与当前调试设备匹配
  • 调试环境必须使用AppCheckDebugProvider,模拟器无法获取正式环境的Apple DeviceCheck令牌

3. 确认Google Cloud配置细节

虽然已移除API限制,仍需检查:

  • Google Cloud控制台中Google Identity API已启用(添加Firebase Google登录后通常自动启用,可手动确认)
  • Firebase项目绑定的iOS API密钥,已在AppCheck配置中完成关联

额外说明

开启“Google Identity for iOS”强制校验后,所有iOS端的Google登录请求必须携带有效AppCheck令牌才会被放行;而邮箱/密码登录属于Firebase Auth原生请求路径,已被你配置的AppCheck覆盖,因此不受影响。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 22:39:54