¿Es posible desactivar la autorización de Google-API?
Estoy escribiendo un simple script en Python que obtiene la duración de un video de YouTube utilizando la API de Google. Este es el código que escribí:
# imports
import os
import google_auth_oauthlib.flow
import googleapiclient.discovery
import googleapiclient.errors
import aniso8601
scopes = ["https://www.googleapis.com/auth/youtube.readonly"]
# Deshabilitar la verificación HTTPS de OAuthlib cuando se ejecuta localmente.
# *NO DEJES* esta opción habilitada en producción.
os.environ["OAUTHLIB_INSECURE_TRANSPORT"] = "1"
api_service_name = "youtube"
api_version = "v3"
# Nombre de archivo que contiene las credenciales (API/OAuth)
client_secrets_file = "MI_NOMBRE_DE_ARCHIVO.json"
# Obtener credenciales y crear un cliente de API
flow = google_auth_oauthlib.flow.InstalledAppFlow.from_client_secrets_file(client_secrets_file, scopes)
credentials = flow.run_console()
youtube = googleapiclient.discovery.build(api_service_name, api_version, credentials=credentials)
request = youtube.videos().list(
part="contentDetails",
id="CbxQWAFv7sA"
)
response = request.execute()
duration_in_iso_8601 = response['items'][0]['contentDetails']['duration']
duration_in_seconds = aniso8601.parse_duration(duration_in_iso_8601).seconds
print(duration_in_seconds)
Ahora, todo funciona bien excepto el hecho de que cada vez que ejecuto el script se me solicita ingresar un código de autorización:
Por favor, visite esta URL para autorizar esta aplicación: https://accounts.google.com/o/oauth2/auth?response_type=code&client_id=MI_ID.apps.googleusercontent.com&redirect_uri=urn%3Aietf%3Awg%3Aoauth%3A2.0%3Aoob&scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fyoutube.readonly&state=i4RuG2QRXmef9t5MQUoOOqSXGhvMM5&prompt=consent&access_type=offline
Ingrese el código de autorización:
Mi objetivo es que eventualmente el script se automatice en diferentes dispositivos, por lo que lo anterior interrumpe el flujo. Quería saber si hay alguna forma de deshabilitar esta solicitud. Si no es posible, ¿hay alguna otra forma de implementarlo para que la autorización no interfiera en el flujo?
¡Muchas gracias!
davy.ai
Sí, es posible deshabilitar la solicitud de autorización utilizando una cuenta de servicio en lugar de la autenticación de OAuth2. Con una cuenta de servicio, las credenciales de autorización se almacenan en un archivo JSON que se puede agregar al script o almacenar en un lugar seguro. De esta manera, no es necesario la interacción del usuario para autorizar la aplicación.
Para utilizar una cuenta de servicio, siga estos pasos:
Al modificar el código para usar las credenciales de la cuenta de servicio, ya no se te solicitará autorización al ejecutar el script. De esta forma, podrás automatizar el script en diferentes dispositivos sin interrupciones.