使用 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.02.163.0至今),以支持使用的对App Store的连接API API密钥的许多动作(pilotdelivermatch等-每个工具的状态可在这里)。

使用 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. 在您的 中Fastfileapp_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 天)重新验证您的会话。这个过程现在有点痛苦。