我发布了我的应用程序,以消防分发抛飞快,而使用CI机。我正面临着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"] = ""
这是我收到的错误:
为帐户“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
设置为自动化)(请参阅更多的at:数) 请输入六位码:
我读过这个"https://docs.fastlane.tools/best-practices/continuous-integration/“,但没有运气。有人能帮我解决这个问题吗?
发布于 2020-10-13 18:03:03
在最近的发行版(从2.157.0到2.163.0到目前为止),fastlane团队做了一个很棒的工作,以支持在许多操作中使用应用程序商店连接API的API键 (pilot
、deliver
、match
等)--每个工具的状态都是可在这里找到。
使用API密钥无需提供苹果帐户来验证和授权fastlane操作在account上执行操作,这也意味着您将不再与CI计算机上的两个因素问题抗争,或者在会话无效时必须通过fastlane spaceauth
手动重新生成会话。
生成API密钥允许您为该密钥配置、验证和使用一个或多个Apple服务。密钥不会过期,但一旦创建,就不能修改以访问更多的服务。一次最多可以有50个活动键。
使用API键还有其他好处,这是推荐的解决方案,如快车道文件中所解释的。
fastlane过去一直使用带有用户名和密码的Apple来使用基于cookie的web会话进行身份验证。fastlane将继续使用相同的基于cookie的web会话来使用App连接API的非官方版本进行身份验证。 但是,当您能够使用API密钥身份验证时,建议使用。这些好处包括:
我不会在这里详细介绍设置和使用API键的步骤,因为在文献资料中已经很好地解释了这个步骤,但是下面是主要步骤:
Fastfile
中,使用存储在2中的值调用app_store_connect_api_key
操作。api_key
参数传递,或者让操作从泳道上下文(如果它支持的话)自动检索其值。2由于无效会话造成的2FA问题:
应消失:)
发布于 2020-09-09 21:09:59
您需要设置一个环境变量‘FASTLANE_SESSION’=‘-\n’令牌。
要获得此令牌,需要使用以下命令手动进行身份验证:
快车道空间-u YOUR_APP_STORE_EMAIL
例如,快车道空间-u joe@test.com。
您需要每2-3周(有些人说是30天)重新验证您的会话。这个过程现在有点痛苦。
发布于 2021-09-21 19:27:21
- For more info, go to the [App Store Connect API Docs](https://developer.apple.com/documentation/appstoreconnectapi/creating_api_keys_for_app_store_connect_api)
- Give your API Key an appropriate role for the task at hand. You can read more about roles in [Permissions in App Store Connect](https://developer.apple.com/support/roles/)
lane :release do
api_key = app_store_connect_api_key(
key_id: "D383SF739",
issuer_id: "6053b7fe-68a8-4acb-89be-165aa6465141",
key_filepath: "./AuthKey_D383SF739.p8",
duration: 1200, # optional (maximum 1200)
in_house: false # optional but may be required if using match/sigh
)
pilot(api_key: api_key)
end
https://stackoverflow.com/questions/63508108
复制相似问题