Como autenticar apps instalados com uma conta de usuário

Este guia explica como se autenticar usando contas de usuário para acessar a API BigQuery quando seu aplicativo é instalado nas máquinas dos usuários.

Para garantir que o aplicativo acesse apenas as tabelas do BigQuery que estão disponíveis para o usuário final, faça a autenticação usando uma credencial de usuário. Essa credencial pode executar consultas apenas no projeto do Google Cloud Platform (GCP) do usuário final, e não no projeto do aplicativo. Como resultado, o usuário é cobrado por consultas em vez do aplicativo.

Antes de começar

  1. Crie um projeto do GCP que represente o aplicativo instalado.
  2. Instale as bibliotecas de cliente do BigQuery.
  3. Instale as bibliotecas necessárias.

    Python

    Instale a integração oauthlib para o Google Auth.
    pip install --upgrade google-auth-oauthlib

Como configurar as credenciais do cliente

Use o botão a seguir para selecionar um projeto e criar as credenciais necessárias.

Receber credenciais

Como criar credenciais manualmente

  1. Acesse a página Credenciais da API no Console do Google Cloud Platform.
  2. Preencha os campos necessários na tela de consentimento do OAuth.
  3. Na página Credenciais, clique no botão Criar credenciais.

    Selecione o ID do cliente OAuth.

  4. Selecione Outro como tipo de aplicativo e clique em Criar.
  5. Clique no botão Fazer o download do JSON para fazer o download das credenciais.

    Fazer o download do JSON.

    Salve o arquivo de credenciais em client_secrets.json. Esse arquivo precisa ser distribuído com seu app.

Como autenticar e chamar a API

  1. Use as credenciais do cliente para executar o fluxo do 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. Use as credenciais autenticadas para se conectar à 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']))

Quando você executa o código de amostra, ele inicia um navegador que solicita acesso ao projeto associado às chaves secretas do cliente. É possível usar as credenciais resultantes para acessar os recursos do BigQuery do usuário, porque a amostra solicitou o escopo do BigQuery.

A seguir

  1. Aprenda outras maneiras de autenticar seu aplicativo para acessar a API BigQuery.
  2. Aprenda sobre autenticação com credenciais de usuário final para todas as APIs do GCP.
Esta página foi útil? Conte sua opinião sobre:

Enviar comentários sobre…

Precisa de ajuda? Acesse nossa página de suporte.