Solución:
La diferencia son los casos de uso:
Como desarrollador, quiero interactuar con GCP a través de gcloud.
gcloud auth login
Esto obtiene sus credenciales y las almacena en ~/.config/gcloud/
. Ahora puedes correr gcloud
comandos desde su terminal y encontrará sus credenciales automáticamente. Cualquier código / SDK no recogerá automáticamente sus créditos en este caso.
Referencia: https://cloud.google.com/sdk/gcloud/reference/auth/login
Como desarrollador, quiero que mi código interactúe con GCP a través del SDK.
gcloud auth application-default login
Esto obtiene sus credenciales a través de un flujo web y las almacena en ‘la ubicación conocida para las credenciales predeterminadas de la aplicación’. Ahora, cualquier código / SDK que ejecute podrá encontrar las credenciales automáticamente. Este es un buen sustituto cuando desea probar localmente código que normalmente se ejecutaría en un servidor y usaría un archivo de credenciales del lado del servidor.
Referencia: https://cloud.google.com/sdk/gcloud/reference/auth/application-default/login
Editar (19/09/2019):
Como Kent contribuyó en su comentario a continuación, ‘la ubicación conocida para las credenciales predeterminadas de la aplicación’ es un archivo llamado application_default_credentials.json
ubicado en su local ~/.config/gcloud/
directorio. Agregué un enlace adicional a continuación a un artículo de Theodore Sui y Daniel De Leo que entra en mayor detalle sobre los diferentes métodos de autenticación.
Artículo: https://medium.com/google-cloud/local-remote-authentication-with-google-cloud-platform-afe3aa017b95
Estoy agregando esto como respuesta porque no tengo la reputación de comentar. Creo que la respuesta de @ Himal es acertada, pero me gustaría aclarar que cuando dice código / SDK, deberíamos pensar en código o lenguaje (Java / Ruby / Python) SDK frente a gcloud SDK (que también se conoce como SDK de Cloud). Esto me confundió un poco porque tenía las mismas dudas.
Entonces, gcloud auth login -> Login to gcloud SDK
gcloud auth application-default login -> Inicie sesión en cualquier código que se ejecute en la computadora (SDK de idioma dentro de una aplicación)
También hay un obsequio en la pantalla de autenticación de OAuth en las ventanas del navegador que se abren:
gcloud auth login
le pide que elija una cuenta para continuar dando acceso a ‘google cloud sdk’.
gcloud auth application-default login
le pide que dé acceso a la biblioteca de autenticación de Google en su lugar.