S'authentifier avec un compte utilisateur dans les applications installées

Ce guide explique comment exploiter l'authentification à l'aide de comptes utilisateur pour accéder à l'API BigQuery lorsque votre application est installée sur les ordinateurs des utilisateurs.

Afin de garantir que l'application accède uniquement aux tables BigQuery disponibles pour l'utilisateur final, faites appel aux identifiants utilisateur pour assurer l'authentification. Un identifiant utilisateur ne peut exécuter de requêtes que sur le projet Google Cloud Platform (GCP) de l'utilisateur final, et non sur le projet de l'application. En conséquence, c'est l'utilisateur qui est facturé pour les requêtes, et non l'application.

Avant de commencer

  1. Créez un projet GCP qui représente votre application installée.
  2. Installez les bibliothèques clientes BigQuery.
  3. Installez les bibliothèques requises.

    Python

    Installez la bibliothèque d'intégration oauthlib pour Google Auth.
    pip install --upgrade google-auth-oauthlib

Configurer les identifiants client

Utilisez le bouton suivant pour sélectionner un projet et créer les identifiants requis.

Obtenir des identifiants

Créer des identifiants manuellement

  1. Accédez à la page des Identifiants de l'API dans la console GCP.
  2. Remplissez les champs obligatoires sur l'écran d'autorisation OAuth.
  3. Sur la page Identifiants, cliquez sur le bouton Créer des identifiants.

    Sélectionnez ID client OAuth.

  4. Comme type d'application, choisissez Autre, puis cliquez sur Créer.
  5. Pour télécharger les identifiants, cliquez sur le bouton Télécharger JSON.

    Télécharger au format JSON.

    Enregistrez le fichier d'identifiants client_secrets.json. Ce fichier doit être distribué avec votre application.

S'authentifier et appeler l'API

  1. Utilisez les identifiants client pour lancer le flux 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. Utilisez les identifiants authentifiés pour vous connecter à l'API 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']))

Lorsque vous exécutez l'exemple de code, celui-ci lance un navigateur qui demande l'accès au projet associé aux codes secrets du client. Vous pouvez utiliser les identifiants résultants pour accéder aux ressources BigQuery de l'utilisateur : en effet, l'exemple a demandé le champ d'application BigQuery.

Étape suivante

  1. Découvrez d'autres moyens d'authentifier votre application pour accéder à l'API BigQuery.
  2. Découvrez l'authentification avec les identifiants de l'utilisateur final dans toutes les API GCP.
Cette page vous a-t-elle été utile ? Évaluez-la :

Envoyer des commentaires concernant…

Besoin d'aide ? Consultez notre page d'assistance.