我按照"入门"登机github页面上的指南,但我一直在myoku页面上收到此错误We're sorry, but something went wrong.
登机页面确实说双因素身份验证工作正常:https://github.com/fastlane/fastlane/blob/master/spaceship/README.md#2-step-verification但我不确定如何将该Cookie添加到我的heroku网站。
提前致谢。
答案 0 :(得分:6)
Fastlane 现在(从 2.160.0 版本开始)支持 Apple's App Store Connect API。这避免了 2FA 会话黑客的所有问题。仍然有一些 fastlane 操作没有得到完全支持,但大多数都得到了支持。
https://docs.fastlane.tools/app-store-connect-api/ 解释了如何开始在 fastlane 中使用 API 密钥。
总而言之,您需要执行以下操作(这些示例直接来自该文档):
app_store_connect_api_key
操作在您的 Fastfile
中指定新键: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
in_house: false, # optional but may be required if using match/sigh
)
pilot(api_key: api_key)
end
或者,将详细信息写入 JSON 文件:
{
"key_id": "D383SF739",
"issuer_id": "6053b7fe-68a8-4acb-89be-165aa6465141",
"key": "-----BEGIN PRIVATE KEY-----\nMIGTAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBHknlhdlYdLu\n-----END PRIVATE KEY-----",
"duration": 1200, # optional
"in_house": false, # optional but may be required if using match/sigh
}
并在您的 Fastfile
中引用 JSON 文件:
lane :release do
pilot( api_key_path: "fastlane/D383SF739.json" )
end
或者通过命令行:
$ fastlane pilot distribute --api_key_path fastlane/D383SF739.json
答案 1 :(得分:0)
请关注https://docs.fastlane.tools/best-practices/continuous-integration/#application-specific-passwords
如果您要从CI机器上将构建版本上载到App Store Connect(动作upload_to_app_store和交付)或TestFlight(动作upload_to_testflight,pilot或testflight),则需要生成应用程序专用密码:
注意:如果您的操作用法除了上传二进制文件以外的其他操作(例如,更新任何元数据,例如设置发行说明或分发给测试人员等。
这是我最近启用2FA时使用Fastlane设置2FA的功能。
与Apple API交互的所有其他操作均不接受应用程序专用密码。
在这里您需要存储在Fastlane中并使用的cookie。我必须通过CI / CD设置来更新changelog。
解锁钥匙串以存储我的用户密码
安全性解锁钥匙串-p $ SYSTEM_PASSWORD
生成cookie重定向到文件(token.txt)。
bundle exec fastlane spaceauth -u ci-user@company.com>&token.txt
将Auth令牌提取到文件“会话”
awk -F“'”'$ 0 = $ 2'token.txt>会话
在运行Fastlane通道之前设置FASTLANE_SESSION变量,它会从上面创建的“会话”文件中读取值。
export FASTLANE_SESSION ='$(<会话)'
照常运行Fastlane testflight车道。
在上面,我同时使用了这两种方法,如果您仅将软件包上传到Testflight,则只需设置FASTLANE_APPLE_APPLICATION_SPECIFIC_PASSWORD变量。
答案 2 :(得分:0)
我在尝试在 pilot/upload_to_testflight
旁边使用 FASTLANE_APPLE_APPLICATION_SPECIFIC_PASSWORD
时遇到问题。它总是在 2FA 步骤上给我错误。事实证明,为了让 pilot
使用该环境变量,必须 传递 2 个参数,apple_id
和 skip_waiting_for_build_processing
,否则正常的用户名和密码身份验证将使用。
请注意,这仅适用于上传,对于任何其他交互,推荐的方法是使用 api_key。