Autentica con una Cuenta de usuario para aplicaciones instaladas

En esta guía, se explica cómo llevar a cabo autenticaciones con cuentas de usuario para acceso a la API de Google BigQuery cuando tu aplicación se instala en las máquinas de los usuarios.

Se puede usar una credencial de usuario a fin de garantizar que la aplicación solo acceda a tablas de BigQuery que estén disponibles para el usuario final. Una credencial de usuario puede ejecutar consultas sobre el proyecto de Cloud Platform del usuario final en lugar del proyecto de la aplicación, por lo que se le cobra por las consultas y no por la aplicación.

Antes de comenzar

  1. Crea un proyecto nuevo en Google Cloud Platform que represente tu aplicación instalada.
  2. Instala las bibliotecas cliente de BigQuery.
  3. Instala bibliotecas adicionales.

    Python

    Instala la integración oauthlib para Google Auth.
    pip install --upgrade google-auth-oauthlib

Configura tus credenciales de cliente

  1. Ve a la página de credenciales de la API en Cloud Platform Console.
  2. Llena los campos obligatorios en la pantalla de consentimiento de OAuth.
  3. En la página de credenciales, haz clic en el botón Crear credenciales.

    Elige el ID de cliente de OAuth.

  4. Selecciona Otro como el tipo de aplicación y, luego, haz clic en Crear.
  5. Para descargar las credenciales, haz clic en el botón Download JSON (Descargar JSON).

    Descarga JSON

    Guarda el archivo de credenciales en client_secrets.json. Este archivo se debe distribuir con tu aplicación.

Autentica y llama a la API

  1. Usa las credenciales de cliente para realizar el flujo de OAuth 2.0.

    Python

    from google_auth_oauthlib import flow
    
    # TODO: Uncomment the line below to set the `launch_browser` variable.
    # launch_browser = True
    #
    # The `launch_browser` boolean variable indicates if a local server is used
    # as the callback URL in the auth flow. A value of `True` is recommended,
    # but a local server does not work if accessing the application remotely,
    # such as over SSH or from a remote Jupyter notebook.
    
    appflow = flow.InstalledAppFlow.from_client_secrets_file(
        'client_secrets.json',
        scopes=['https://www.googleapis.com/auth/bigquery'])
    
    if launch_browser:
        appflow.run_local_server()
    else:
        appflow.run_console()
    
    credentials = appflow.credentials
  2. Usa las credenciales autenticadas para conectarte a la API de BigQuery.

    Python

    from google.cloud import bigquery
    
    # TODO: Uncomment the line below to set the `project` variable.
    # project = 'user-project-id'
    #
    # The `project` variable defines the project to be billed for query
    # processing. The user must have the bigquery.jobs.create permission on
    # this project to run a query. See:
    # https://cloud.google.com/bigquery/docs/access-control#permissions
    
    client = bigquery.Client(project=project, credentials=credentials)
    
    query_string = """SELECT name, SUM(number) as total
    FROM `bigquery-public-data.usa_names.usa_1910_current`
    WHERE name = 'William'
    GROUP BY name;
    """
    query_job = client.query(query_string)
    
    # Print the results.
    for row in query_job.result():  # Wait for the job to complete.
        print("{}: {}".format(row['name'], row['total']))

Cuando ejecutes el código de muestra, este iniciará un navegador que solicitará acceso al proyecto asociado con los secretos del cliente. Luego, las credenciales que se generan se pueden usar para acceder a los recursos de BigQuery del usuario, ya que la muestra solicitó el alcance de BigQuery.

Pasos siguientes

  1. Aprende sobre otras formas de autenticar tu aplicación para acceder a la API de BigQuery.
  2. Obtén información sobre la autenticación con credenciales de usuario final para todas las API de Google Cloud Platform.
¿Te sirvió esta página? Envíanos tu opinión:

Enviar comentarios sobre…

¿Necesitas ayuda? Visita nuestra página de asistencia.