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, realiza la autenticación con una credencial de usuario. Con una credencial de usuario se pueden ejecutar consultas solo con el proyecto de Google Cloud 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 Google Cloud Platform que represente la app 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 de forma manual

  1. Dirígete a la página de Credenciales de API en Google Cloud Console.
  2. Completa los campos obligatorios en la pantalla de consentimiento de OAuth.
  3. En la página Credenciales (Credentials), haz clic en el botón Crear credenciales (Create credentials).

    Elige el ID de cliente de OAuth (OAuth client ID).

  4. Selecciona Otro (Other) como el tipo de app y, luego, haz clic en Crear (Create).
  5. Para descargar las credenciales, haz clic en el botón Descargar JSON (Download 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. Puedes usar las credenciales que se generan para acceder a los recursos de BigQuery del usuario, ya que la muestra solicitó el alcance de BigQuery.

Próximos pasos

  1. Aprende sobre otras formas de autenticar tu app 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 ha resultado útil esta página? Enviar comentarios:

Enviar comentarios sobre...

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