快速通道的两要素身份验证

问题描述

我在使用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"] = ""

这是我收到的错误

启用了帐户的双重身份验证(6位代码) 'appleAcount@gmail.com'有关两因素的更多信息 验证: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/”,但没有运气。谁能帮我解决这个问题?

解决方法

fastlane团队在最近的发行版(到目前为止,从2.157.02.163.0)上做得很好❤,以支持在许多操作(pilot中使用API key for App Store Connect APIdelivermatch等-每个工具的状态为available here)。

使用API​​密钥无需提供Apple帐户来认证和授权快速通道操作以在App Store Connect上进行操作,这也意味着您将不再在CI机器或当会话无效时,必须通过fastlane spaceauth手动重新生成会话。

来自App Store Connect API Key page

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

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

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

但是,建议,当您使用API​​密钥身份验证时, 能够。好处包括:

  • 不需要2FA
  • 更好的表现
  • 文档API
  • 提高的可靠性

我不会在这里详细说明设置和使用API​​密钥的步骤,因为the documentation中已经对此进行了很好的解释,但这是主要步骤:

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

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

enter image description here

应该消失:)

enter image description here

,

您需要设置环境变量'FASTLANE_SESSION'='--- \ n .... \ n'令牌。

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

fastlane spaceauth -u YOUR_APP_STORE_EMAIL

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

您将需要每2-3周(大约30天)重新验证一次会话。这个过程现在有点痛苦。