Autenticación de dos factores con Fastlane
Estoy lanzando mi aplicación a la distribución de Firebase y Fastlane mientras uso la máquina CI. Estoy enfrentando un problema con la 2FA.
Estoy usando Match para recuperar mis certificados. Esto es lo que tengo en "Appfile"
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"] = ""
Este es el error que recibo:
La autenticación de dos factores (código de 6 dígitos) está habilitada para la cuenta '[email protected]'. Más información sobre la autenticación de dos factores: https://support.apple.com/en-us/HT204915
Si está ejecutando esto en una sesión no interactiva (por ejemplo, servidor o CI), consulte https://github.com/fastlane/fastlane/tree/master/spaceship#2-step-verification
(Ingrese
sms
para escapar de este mensaje y seleccione un número de teléfono confiable para enviar el código como un mensaje de texto)(También puede configurar la variable de entorno
SPACESHIP_2FA_SMS_DEFAULT_PHONE_NUMBER
para automatizar esto) (Lea más en:https://github.com/fastlane/fastlane/blob/master/spaceship/docs/Authentication.md#auto-select-sms-via-spaceship_2fa_sms_default_phone_number)Ingrese el código de 6 dígitos:
He leído esto "https://docs.fastlane.tools/best-practices/continuous-integration/" pero sin suerte. ¿Alguien puede ayudarme a resolver este problema?
Respuestas
El equipo fastlane hizo un gran trabajo ❤ en versiones recientes (de 2.157.0 a 2.163.0 hasta ahora) para apoyar el uso de una clave de API para la tienda de aplicaciones API de Conexión en muchas acciones ( pilot
, deliver
, match
, etc. - el estado de cada la herramienta está disponible aquí ).
El uso de una clave de API elimina la necesidad de proporcionar una cuenta de Apple para autenticar y autorizar las acciones de Fastlane para realizar sus operaciones en App Store Connect, lo que también significa que ya no tendrá problemas de 2 factores en su máquina de CI o tendrá que hacerlo manualmente. regenerar una sesión a través de fastlane spaceauth
cuando deja de ser válida.
Desde la página Clave API de App Store Connect :
La generación de una clave API le permite configurar, autenticar y utilizar uno o más servicios de Apple para esa clave. Las claves no caducan, pero no se pueden modificar para acceder a más servicios una vez creadas. Puede tener un máximo de 50 claves activas a la vez
Hay otros beneficios de usar una clave API y es la solución recomendada como se explica en la documentación de Fastlane :
Fastlane ha utilizado históricamente ID de Apple con nombre de usuario y contraseña para autenticarse mediante una sesión web basada en cookies. Fastlane continuará usando esta misma sesión web basada en cookies para autenticarse con una versión no oficial de la API de App Store Connect.
Sin embargo, se recomienda utilizar la autenticación de clave API cuando sea posible. Los beneficios incluyen:
- No se necesita 2FA
- Mejor presentación
- API documentada
- Mayor confiabilidad
No detallaré los pasos para configurar y usar una clave API aquí, ya que ya está bien explicado en la documentación, pero estos son los pasos principales:
- Cree una nueva clave de API desde App Store Connect (debe tener el rol de "titular de la cuenta" para crear una),
- Almacene la clave y su información en su CI,
- En su
Fastfile
, llame a la app_store_connect_api_keyacción con los valores almacenados en 2. - Pase el valor devuelto por 3. como
api_key
parámetro cuando llame a una acción, o deje que la acción recupere su valor por sí misma del contexto del carril (si lo admite).
Problema de 2FA debido a una sesión no válida:

Debería desaparecer :)

Necesita configurar una variable de entorno 'FASTLANE_SESSION' = '--- \ n .... \ n' token.
Para obtener este token, debe autenticarse manualmente con este comando:
Fastlane spaceauth -u YOUR_APP_STORE_EMAIL
ejemplo fastlane spaceauth -u [email protected].
Deberá volver a validar cada 2-3 semanas (algunos dicen que 30 días) su sesión. El proceso es un poco doloroso en este momento.