Ejemplo de cuenta de servicio de Python de la API de Google Drive

Oct 28 2020

¿Es posible autenticarse con la API de Google Drive mediante una cuenta de servicio de Google, en lugar de un flujo de OAuth?

Los ejemplos de Python para Google Drive usan OAuth - Inicio rápido de Python de Google Drive

Sin embargo, no puedo encontrar ningún ejemplo de cuenta de servicio.

La mayor parte del otro uso de APIs de Google I (Traducir, Nube Vision) hacer uso de cuentas de servicios, sin embargo, por lo que me gustaría despreciar mi código de Google Drive OAuth para la consistencia.

Respuestas

2 DaImTo Oct 28 2020 at 17:19

El mejor ejemplo de Python de cuenta de servicio que conozco es el de Google Analytics.

Debería ser algo como esto.

from apiclient.discovery import build
from oauth2client.service_account import ServiceAccountCredentials


SCOPES = ['https://www.googleapis.com/auth/drive.readonly']
KEY_FILE_LOCATION = '<REPLACE_WITH_JSON_FILE>'
VIEW_ID = '<REPLACE_WITH_VIEW_ID>'


def initialize_drive():
  """Initializes an service object.

  Returns:
    An authorized service object.
  """
  creds = ServiceAccountCredentials.from_json_keyfile_name(
      KEY_FILE_LOCATION, SCOPES)

  # Build the service object.
  service = build('drive', 'v3', credentials=creds)

  return service

Una vez que tenga el servicio de disco, debería poder usar el resto del código que tiene del otro tutorial. Es solo el método de autenticación el que es diferente.

Solo recuerde crear credenciales de cuenta de servicio y no credenciales de Oauth.