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

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

Un identifiant utilisateur peut être utilisé pour s'assurer que l'application n'accède qu'aux tables BigQuery présentées à l'utilisateur final. Un identifiant utilisateur permet d'exécuter des requêtes uniquement sur le projet Cloud Platform de l'utilisateur final plutôt que sur le projet de l'application. Les requêtes sont donc facturées à l'utilisateur au lieu de l'application.

Avant de commencer

  1. Créez un projet Google Cloud Platform représentant l'application que vous avez installée.
  2. Installez les bibliothèques clientes BigQuery.
  3. Installez des bibliothèques supplémentaires.

    Python

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

Configurer les identifiants client

  1. Accédez à la page Identifiants de l'API dans la console Google Cloud Platform.
  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. Pour le type d'application, sélectionnez 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']))

L'exécution de l'exemple de code ouvre un navigateur qui demande l'accès au projet associé aux codes secrets du client. Les identifiants correspondants peuvent ensuite être utilisés pour accéder aux ressources BigQuery de l'utilisateur, car l'exemple a demandé le champ d'application BigQuery.

Étapes suivantes

  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 Google Cloud Platform.
Cette page vous a-t-elle été utile ? Évaluez-la :

Envoyer des commentaires concernant…

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