收到错误“需要确认 Apple 的 Apple ID 和隐私声明”

问题描述

您好,我们在使用 fastlane sigh/get_provisioning_profile 时遇到此错误。我不认为它是 fastlane issue,因为它发生在 case1 case2 之前并通过接受协议或其他未知原因得到修复..

需要承认 Apple 的 Apple ID 和隐私声明。请手动登录https://appleid.apple.com(或https://appstoreconnect.apple.com)以确认声明。

我们去了

但没有什么需要批准的。

有什么想法吗?

解决方法

总结:

案例 1:

* 您不希望启用 2FA

  1. 使用 fastlane 2.173.0 更新 Gemfile 并运行 bundle installbundle update fastlanebundle update
  2. 在 CI 中使用 SPACESHIP_SKIP_2FA_UPGRADE=1

情况 2:

* 您启用了 2FA

* 您只需要非企业帐号

  1. 使用 appstore connectAccount Holder role 生成 APP_STORE_CONNECT_API_KEY

enter image description here

看起来像

-----BEGIN PRIVATE KEY-----\nabcdef12345abcdef12345\n-----END PRIVATE KEY-----
  1. 将其作为 APP_STORE_CONNECT_API_KEY 环境变量添加到您的 CI 中
lane :get_app_store_connect_api_key do
  ensure_env_vars(
    env_vars: [
      'APP_STORE_CONNECT_API_KEY'
    ]
  ) 
  app_store_connect_api_key(
    key_id: "12345ABCDEF",issuer_id: "1234abcd-12ab-12ab-12ab-123456abcdef",key_content: "#{ENV["APP_STORE_CONNECT_API_KEY"]}".gsub('\n','\\n'),in_house: false,)
end
  1. 把它传到你的车道
get_provisioning_profile(api_key: get_app_store_connect_api_key)

sigh(api_key: get_app_store_connect_api_key)

pilot(api_key: get_app_store_connect_api_key)

案例 3:

* 您启用了 2FA

* 您需要企业帐户并获取配置文件

  1. 运行
fastlane spaceauth -u user@email.com
  1. 将输出用作 CI 上的 FASTLANE_SESSION 环境变量。

  2. 您仍然需要包含 FASTLANE_PASSWORD

请注意,这仅持续 8 小时

案例 4:

* 您启用了 2FA

* 您需要企业或非企业帐号

* 您需要上传到应用商店

  1. https://appleid.apple.com/account/manage 创建 FASTLANE_APPLE_APPLICATION_SPECIFIC_PASSWORD

  2. 在您的 ci 中将其设置为环境变量

案例 5:

* 您启用了 2FA

* 你需要从 appstore connect 下载 dsyms

  1. 运行
fastlane spaceauth -u user@email.com
  1. 将输出用作 CI 上的 FASTLANE_SESSION 环境变量。

  2. 您仍然需要包含 FASTLANE_USERFASTLANE_PASSWORD

请注意,这仅持续 8 小时

,

我在使用 Bitrise(另一个 CI/CD 工具)时遇到了同样的问题。该错误消息具有误导性,因为它与接受某些新政策无关,而是与 App Store Connect API 使用的新身份验证系统有关。

为了解决这个问题,我登录了 Bitrise,我不得不切换到新的身份验证方法,如下图所示。

enter image description here

旧的身份验证方法基于单个 Apple Developer 用户的凭据,而新方法则基于 API 密钥的生成。正如您从下面的屏幕截图中看到的,我必须在 User and Access -> Keys 下创建一个 API 密钥,然后将其上传到 Bitrise。

enter image description here

我希望我的案例可以帮助其他人解决问题。我敢肯定,即使您使用不同的工具,您也必须或多或少地遵循相同的程序。

,

我正在使用 Apple 帐户对 fastlane 操作进行身份验证和授权。

更改我的 CI 以使用 Apple API key 似乎可以解决问题。

Fasltane 应该使用 app_store_connect_api_key

这里的文档: http://docs.fastlane.tools/actions/app_store_connect_api_key/#app_store_connect_api_key

,

您是否检查过 2FA 设置?

Apple 宣布:“从 2021 年 2 月开始,所有用户都需要额外的身份验证才能登录 App Store Connect。”

,

对于 Azure DevOps 用户,在我们等待合并 AppStoreConnect Api 密钥支持期间,临时 SPACESHIP_SKIP_2FA_UPGRADE=1 起作用:

https://github.com/microsoft/app-store-vsts-extension/pull/189

spaceship skip 2FA upgrade


编辑


拉取请求已合并,API 身份验证现在可以工作,并且是首选的身份验证方式。

AppStoreConnect API authentication

,

对于那些使用 Pilot 的人,有一个简单的解决方案:

只需将其添加到 Pilot:

skip_waiting_for_build_processing: true,apple_id: "123456789"

您可以在 AppStoreConnect 的通用 > 应用信息中找到 apple_id

参考: https://dev.to/dumazy/upload-to-testflight-with-fastlane-and-2fa-11k8

,

就我而言,以下解决方案适用于上传 ipa 文件

lane :upload_ipa do |options|
  api_key = app_store_connect_api_key(
    key_id: "xxxxx",issuer_id: "xxxxxx",key_filepath: "./fastlane/AuthKey_xxxxx.p8",#Mention the relative path
    duration: 1200,# optional
    in_house: false,# optional but may be required if using match/sigh
  )
  # The ipa and team_id are sent as options parameters to the method
  pilot(api_key: api_key,ipa: options[:ipa],team_id: options[:team_id],skip_waiting_for_build_processing: true,wait_processing_interval: 120,app_platform: options[:app_platform])
end