Autentica con una Cuenta de usuario para apps instaladas

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

A fin de garantizar que la aplicación solo acceda a tablas de BigQuery que estén disponibles para el usuario final, autentícate con una credencial de usuario. Una credencial de usuario puede ejecutar consultas solo con el proyecto de Google Cloud Platform (GCP) del usuario final en lugar del proyecto de la app. Como resultado, al usuario se le facturan las consultas en lugar de la app.

Antes de comenzar

  1. Crea un proyecto de GCP que represente la aplicación instalada.
  2. Instala las bibliotecas cliente de BigQuery.
  3. Instala las bibliotecas requeridas.

    Python

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

Configura tus credenciales de cliente

Usa el siguiente botón para seleccionar un proyecto y crear las credenciales necesarias.

Obtener credenciales

Crea credenciales manualmente

  1. Dirígete a la página de Credenciales de API en Google Cloud Platform Console.
  2. Llena los campos obligatorios en la pantalla de consentimiento de OAuth.
  3. En la página 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 app.

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 ejecutas el código de muestra, se inicia un navegador que solicita acceso al proyecto asociado con los secretos del cliente. Puede usar las credenciales resultantes para acceder a los recursos de BigQuery del usuario porque 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 GCP.
¿Te ha resultado útil esta página? Enviar comentarios:

Enviar comentarios sobre...

Si necesitas ayuda, visita nuestra página de asistencia.