Двухфакторная аутентификация с Fastlane

Aug 20 2020

Я выпускаю свое приложение для распространения firebase throw Fastlane при использовании машины CI. У меня проблема с 2FA.

Я использую Match для получения сертификатов. Это то, что у меня есть в разделе "Файл приложения"

app_identifier "com.example.example" # the bundle 
apple_id "[email protected]" # Your Apple
team_id "abcd..."  # Developer Portal Team ID
ENV["FASTLANE_USER"] = "[email protected]"
ENV["MATCH_PASSWORD"] = ""
ENV["FASTLANE_PASSWORD"] = ""
ENV["FASTLANE_APPLE_APPLICATION_SPECIFIC_PASSWORD"] = ""

Я получаю вот такую ​​ошибку:

Двухфакторная аутентификация (6-значный код) включена для учетной записи [email protected] Подробнее о двухфакторной аутентификации: 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/", но мне не повезло. может ли кто-нибудь помочь мне решить эту проблему?

Ответы

7 rd3n Oct 13 2020 at 18:03

Fastlane команда проделали большую работу ❤ в последних версиях (от 2.157.0 до 2.163.0 до сих пор) , чтобы поддержать использование ключа API для App Store Connect API во многих действиях ( pilot, deliver, matchи т.д. - статус для каждого инструмент доступен здесь ).

Использование ключа API устраняет необходимость предоставлять учетную запись Apple для аутентификации и авторизации действий fastlane для выполнения своих операций в App Store Connect, что также означает, что вы больше не будете бороться с двухфакторными проблемами на вашем компьютере CI или должны будете вручную восстановить сеанс, fastlane spaceauthкогда он станет недействительным.

Со страницы App Store Connect API Key :

Создание ключа API позволяет настраивать, аутентифицировать и использовать для этого ключа одну или несколько служб Apple. Срок действия ключей не истекает, но их нельзя изменить для доступа к другим службам после создания. У вас может быть не более 50 активных ключей одновременно.

Есть и другие преимущества использования ключа API, и это рекомендуемое решение, как описано в документации Fastlane :

Fastlane исторически использовал Apple ID с именем пользователя и паролем для аутентификации с помощью веб-сеанса на основе файлов cookie. fastlane продолжит использовать тот же веб-сеанс на основе файлов cookie для аутентификации с помощью неофициальной версии API App Store Connect.

Однако по возможности рекомендуется использовать аутентификацию с помощью ключа API. Преимущества включают:

  • 2FA не требуется
  • Лучшая производительность
  • Документированный API
  • Повышенная надежность

Я не буду здесь подробно описывать шаги по настройке и использованию ключа API, поскольку это уже хорошо объяснено в документации, но вот основные шаги:

  1. Создайте новый ключ API из App Store Connect (для его создания у вас должна быть роль «Владелец учетной записи»),
  2. Храните ключ и информацию о нем на своем CI,
  3. В вашем Fastfileвызовите app_store_connect_api_keyдействие со значениями, хранящимися в 2.
  4. Передайте значение, возвращаемое функцией 3., в качестве api_keyпараметра, когда вы вызываете действие, или позвольте действию само извлекать свое значение из контекста полосы (если оно поддерживает).

Проблема с 2FA из-за недопустимого сеанса:

Должно исчезнуть :)

3 Ranknoodle Sep 09 2020 at 21:09

Вам необходимо настроить переменную среды 'FASTLANE_SESSION' = '--- \ n .... \ n' токен.

Чтобы получить этот токен, вам необходимо пройти аутентификацию вручную с помощью этой команды:

fastlane spaceauth -u YOUR_APP_STORE_EMAIL

пример fastlane spaceauth -u [email protected].

Вам необходимо будет проходить повторную валидацию каждые 2-3 недели (некоторые говорят, что 30 дней) сеанс. Сейчас процесс довольно болезненный.