使用 fastlane 进行两因素身份验证

Gil*_*iel 17 continuous-integration two-factor-authentication fastlane

我在使用 CI 机器时将我的应用程序发布到 firebase 分发抛出 Fastlane。我面临着 2FA 的问题。

我使用 Match 来检索我的证书。这是我在“Appfile”下的内容

app_identifier "com.example.example" # the bundle 
apple_id "appleAcount@gmail.com" # Your Apple
team_id "abcd..."  # Developer Portal Team ID
ENV["FASTLANE_USER"] = "appleAcount@gmail.com"
ENV["MATCH_PASSWORD"] = ""
ENV["FASTLANE_PASSWORD"] = ""
ENV["FASTLANE_APPLE_APPLICATION_SPECIFIC_PASSWORD"] = ""
Run Code Online (Sandbox Code Playgroud)

这是我收到的错误:

帐户“appleAcount@gmail.com”已启用双因素身份验证(6 位代码)有关双因素身份验证的更多信息:https : //support.apple.com/en-us/HT204915

如果您在非交互式会话(例如服务器或 CI)中运行它,请查看 https://github.com/fastlane/fastlane/tree/master/spaceship#2-step-verification

(输入sms以逃避此提示并选择受信任的电话号码以将代码作为短信发送)

(您还可以设置环境变量 SPACESHIP_2FA_SMS_DEFAULT_PHONE_NUMBER以自动执行此操作)(阅读更多信息:https : //github.com/fastlane/fastlane/blob/master/spaceship/docs/Authentication.md#auto-select-sms-via-spaceship_2fa_sms_default_phone_number )

请输入 6 位代码:

我读过这篇“https://docs.fastlane.tools/best-practices/continuous-integration/”但没有运气。谁能帮我解决这个问题?

rd3*_*d3n 52

fastlane 团队做得很好?在最近的版本(从2.157.0至2.163.0至今),以支持使用的对App Store的连接API API密钥的许多动作(pilot,deliver,match等-每个工具的状态可在这里)。

使用 API 密钥无需提供 Apple 帐户来验证和授权 fastlane 操作在 App Store Connect 上执行其操作,这也意味着您将不再在 CI 机器上与 2 因素问题作斗争或必须手动通过fastlane spaceauth当会话无效时重新生成会话。

从App Store Connect API Key 页面:

生成 API 密钥允许您为该密钥配置、验证和使用一项或多项 Apple 服务。密钥不会过期,但一旦创建就无法修改以访问更多服务。您一次最多可以拥有 50 个活动密钥

使用 API 密钥还有其他好处,它是推荐的解决方案,如fastlane 文档中所述:

fastlane 过去一直使用带有用户名和密码的 Apple ID 来使用基于 cookie 的网络会话进行身份验证。fastlane 将继续使用相同的基于 cookie 的网络会话来使用非官方版本的 App Store Connect API 进行身份验证。

但是,建议您在有能力的情况下使用 API Key 身份验证。好处包括:

  • 不需要 2FA
  • 更好的性能
  • 记录的 API
  • 提高可靠性

我不会在这里详细说明设置和使用 API 密钥的步骤,因为文档中已经很好地解释了它,但这里是主要步骤:

  1. 从 App Store Connect 创建一个新的 API 密钥(您必须拥有“Account Holder”角色才能创建)并为其分配“App Manager”角色(参见角色权限文档),
  2. 将密钥及其信息存储在您的 CI 上,
  3. 在您的 中Fastfile,app_store_connect_api_key使用存储在 2 中的值调用操作。
  4. api_key调用动作时将3. 返回的值作为参数传递,或者让动作自己从通道上下文中检索其值(如果它支持)。

由于会话无效导致的 2FA 问题:

在此处输入图片说明

应该消失:)

在此处输入图片说明

  • 这应该被标记为答案 (2认同)

Ran*_*dle 8

您需要设置一个环境变量 'FASTLANE_SESSION'='---\n....\n' 标记。

要获取此令牌,您需要使用以下命令手动进行身份验证:

fastlane spaceauth -u YOUR_APP_STORE_EMAIL

例如 fastlane spaceauth -u joe@test.com。

您需要每 2-3 周(有人说 30 天)重新验证您的会话。这个过程现在有点痛苦。