将 App Check 与调试提供程序搭配使用(Apple 平台)

App Check 注册应用后,如果您希望在 App Check 通常不会归类为有效提供方的环境(例如开发期间的模拟器或设备)或持续集成 (CI) 环境中运行您的应用,可以创建应用的调试 build,该 build 使用 App Check 调试提供方,而不是真正的证明提供方。

在开发中使用调试提供程序

如需在运行应用时(例如在开发期间)以交互方式使用调试提供程序,请执行以下操作:

  1. 在调试 build 中,请在使用任何 Firebase 后端服务之前创建并设置 App Check 调试提供方工厂:

    Swift

    let providerFactory = AppCheckDebugProviderFactory()
    AppCheck.setAppCheckProviderFactory(providerFactory)
    
    FirebaseApp.configure()

    Objective-C

    FIRAppCheckDebugProviderFactory *providerFactory =
          [[FIRAppCheckDebugProviderFactory alloc] init];
    [FIRAppCheck setAppCheckProviderFactory:providerFactory];
    
    // Use Firebase library to configure APIs
    [FIRApp configure];
  2. 在 Xcode 项目(v11.0 或更高版本)中启用调试日志记录:

    1. 打开 Product(产品)> Scheme(方案)> Edit scheme(修改方案)
    2. 从左侧菜单中选择 Run(运行),然后选择 Arguments(参数)标签页。
    3. Arguments Passed on Launch(启动参数)部分,添加 -FIRDebugEnabled
  3. 启动应用。当 SDK 尝试向后端发送请求时,系统会记录一个本地调试令牌。例如:

    [Firebase/AppCheck][I-FAA001001] Firebase App Check Debug Token:
    123a4567-b89c-12d3-e456-789012345678
  4. Firebase 控制台的 App Check 部分中,从应用的溢出菜单中选择管理调试令牌。然后,注册您在上一步中记录的调试令牌。

    “管理调试令牌”菜单项的屏幕截图

注册令牌后,Firebase 后端服务会将其视为有效的令牌。

由于此令牌允许用户在没有有效设备的情况下访问您的 Firebase 资源,因此请务必确保此令牌的私密性。请勿将其提交到公共代码库;如果注册的令牌被盗用,请立即在 Firebase 控制台中撤消该令牌。

在 CI 环境中使用调试提供方

如需在持续集成 (CI) 环境中使用调试提供程序,请执行以下操作:

  1. Firebase 控制台的 App Check 部分中,从应用的溢出菜单中选择管理调试令牌。然后,创建一个新的调试令牌。在下一步中,您需要用到该令牌。

    由于此令牌允许用户在没有有效设备的情况下访问您的 Firebase 资源,因此请务必确保此令牌的私密性。请勿将其提交到公共代码库;如果注册的令牌被盗用,请立即在 Firebase 控制台中撤消该令牌。

    “管理调试令牌”菜单项的屏幕截图

  2. 将您刚刚创建的调试令牌添加到 CI 系统的安全密钥存储区(例如 GitHub Actions 的加密 Secret 或 Travis CI 的加密变量)中。

  3. 如有必要,请配置 CI 系统,以使调试令牌在 CI 环境中作为环境变量使用。以 APP_CHECK_DEBUG_TOKEN_FROM_CI 之类的形式为变量命名。

  4. 在 Xcode 中,向测试方案添加一个环境变量,其名称为 FIRAAppCheckDebugToken,其值为 $(APP_CHECK_DEBUG_TOKEN) 之类的形式。

  5. 配置 CI 测试脚本,将调试令牌作为环境变量传递。例如:

    xcodebuild test -scheme YourTestScheme -workspace YourProject.xcworkspace \
    APP_CHECK_DEBUG_TOKEN=$(APP_CHECK_DEBUG_TOKEN_FROM_CI)
  6. 在调试 build 中,请在使用任何 Firebase 后端服务之前创建并设置 App Check 调试提供方工厂:

    Swift

    let providerFactory = AppCheckDebugProviderFactory()
    AppCheck.setAppCheckProviderFactory(providerFactory)
    
    FirebaseApp.configure()

    Objective-C

    FIRAppCheckDebugProviderFactory *providerFactory =
          [[FIRAppCheckDebugProviderFactory alloc] init];
    [FIRAppCheck setAppCheckProviderFactory:providerFactory];
    
    // Use Firebase library to configure APIs
    [FIRApp configure];

当您的应用在 CI 环境中运行时,Firebase 后端服务会将其发送的令牌视为有效的令牌。