Fluxo de trabalho de autenticação multiusuário

No fluxo de trabalho de autenticação multiusuário, você cria seu próprio fluxo do OAuth para autenticar os usuários. Há vários tipos de apps discutidos na documentação do Google Identity, além da configuração do projeto do Console de APIs do Google necessária para oferecer suporte a cada tipo de app. Todos esses tipos de app são compatíveis com a API Google Ads. Os detalhes técnicos adicionais que você precisa considerar são:

  • Configure seu aplicativo para solicitar o seguinte escopo do OAuth 2.0:

    https://www.googleapis.com/auth/adwords
    
  • Seu app pode precisar fazer chamadas de API em nome do usuário enquanto ele estiver off-line. Um cenário comum é fazer o download de métricas da conta off-line para gerar relatórios e realizar análises da conta. Por isso, recomendamos solicitar o acesso off-line do OAuth.

  • Conclua o processo de verificação do app OAuth para que seu app seja verificado.

Visão geral do fluxo de trabalho

A implementação de um fluxo de trabalho de autenticação multiusuário envolve três etapas principais:

  1. Direcionar os usuários para a tela de permissão OAuth: redirecione cada usuário para o endpoint de autorização do OAuth 2.0 do Google solicitando o escopo https://www.googleapis.com/auth/adwords e o acesso off-line. Os usuários precisam se autenticar com uma chave de acesso para concluir o fluxo de autorização e gerar um token de atualização.
  2. Trocar o código de autorização por tokens: depois que o usuário conceder permissão, capture o código de autorização retornado e troque-o por um token de acesso e um token de atualização.
  3. Armazenar tokens e inicializar o cliente no ambiente de execução: armazene com segurança o token de atualização de cada usuário no seu repositório de dados e transmita as credenciais do usuário ao inicializar a instância GoogleAdsClient no ambiente de execução.

Configuração da biblioteca de cliente

Depois de autorizar o usuário e receber as credenciais do OAuth 2.0, configure a biblioteca de cliente seguindo as instruções na guia correspondente à sua linguagem de programação.

Java

É possível inicializar a instância GoogleAdsClient no ambiente de execução usando as credenciais que você recebeu do usuário em que as contas estão fazendo chamadas de API.

UserCredentials credentials =
    UserCredentials.newBuilder()
        .setClientId("INSERT_OAUTH2_CLIENT_ID_HERE")
        .setClientSecret("INSERT_OAUTH2_CLIENT_SECRET_HERE")
        .setRefreshToken("INSERT_OAUTH2_REFRESH_TOKEN_HERE")
        .build();

// Creates a GoogleAdsClient with the provided credentials.
GoogleAdsClient client =
    GoogleAdsClient.newBuilder()
        // Sets the OAuth credentials which provide Google Ads account
        // access.
        .setCredentials(credentials)
        // Optional: sets the login customer ID.
        .setLoginCustomerId(Long.valueOf("INSERT_LOGIN_CUSTOMER_ID_HERE"))
        .build();

Consulte o guia de configuração para mais opções.

.NET

É possível inicializar a instância GoogleAdsClient no ambiente de execução usando as credenciais que você recebeu do usuário em que as contas estão fazendo chamadas de API.

GoogleAdsConfig config = new GoogleAdsConfig()
{
    OAuth2Mode = OAuth2Flow.APPLICATION,
    OAuth2ClientId = "INSERT_OAUTH2_CLIENT_ID_HERE",
    OAuth2ClientSecret = "INSERT_OAUTH2_CLIENT_SECRET_HERE",
    OAuth2RefreshToken = "INSERT_OAUTH2_REFRESH_TOKEN_HERE",
    LoginCustomerId = "INSERT_LOGIN_CUSTOMER_ID_HERE",
};

GoogleAdsClient client = new GoogleAdsClient(config);

Consulte o guia de configuração para mais opções.

Python

É possível inicializar a instância GoogleAdsClient no ambiente de execução usando as credenciais que você recebeu do usuário em que as contas estão fazendo chamadas de API.

from google.ads.googleads.client import GoogleAdsClient

credentials = {
    "login_customer_id": "INSERT_LOGIN_CUSTOMER_ID_HERE",
    "refresh_token": "INSERT_OAUTH2_REFRESH_TOKEN_HERE",
    "client_id": "INSERT_OAUTH2_CLIENT_ID_HERE",
    "client_secret": "INSERT_OAUTH2_CLIENT_SECRET_HERE",
    "use_proto_plus": True,
}

client = GoogleAdsClient.load_from_dict(credentials)

Consulte o guia de configuração para mais opções.

PHP

É possível inicializar a instância GoogleAdsClient no ambiente de execução usando as credenciais que você recebeu do usuário em que as contas estão fazendo chamadas de API.

$oAuth2Credential = (new OAuth2TokenBuilder())
    ->withClientId('INSERT_OAUTH2_CLIENT_ID_HERE')
    ->withClientSecret('INSERT_OAUTH2_CLIENT_SECRET_HERE')
    ->withRefreshToken('INSERT_OAUTH2_REFRESH_TOKEN_HERE')
    ->build();

$googleAdsClient = (new GoogleAdsClientBuilder())
    ->withOAuth2Credential($oAuth2Credential)
    ->withLoginCustomerId('INSERT_LOGIN_CUSTOMER_ID_HERE')
    ->build();

Consulte o guia de configuração para mais opções.

Ruby

É possível inicializar a instância GoogleAdsClient no ambiente de execução usando as credenciais que você recebeu do usuário em que as contas estão fazendo chamadas de API.

client = Google::Ads::GoogleAds::GoogleAdsClient.new do |config|
  config.client_id = 'INSERT_OAUTH2_CLIENT_ID_HERE'
  config.client_secret = 'INSERT_OAUTH2_CLIENT_SECRET_HERE'
  config.refresh_token = 'INSERT_OAUTH2_REFRESH_TOKEN_HERE'
  config.login_customer_id = 'INSERT_LOGIN_CUSTOMER_ID_HERE'
end

Consulte o guia de configuração para mais opções.

Perl

É possível inicializar a instância GoogleAdsClient no ambiente de execução usando as credenciais que você recebeu do usuário em que as contas estão fazendo chamadas de API.

my $api_client = Google::Ads::GoogleAds::Client->new({
  login_customer_id => "INSERT_LOGIN_CUSTOMER_ID_HERE"
});

my $oauth2_handler = $api_client->get_oauth2_applications_handler();
$oauth2_handler->set_client_id("INSERT_OAUTH2_CLIENT_ID_HERE");
$oauth2_handler->set_client_secret("INSERT_OAUTH2_CLIENT_SECRET_HERE");
$oauth2_handler->set_refresh_token("INSERT_OAUTH2_REFRESH_TOKEN_HERE");

Consulte o guia de configuração para mais opções.

curl

Comece usando um cliente HTTP para buscar um token de acesso do OAuth 2.0. Este guia usa o comando curl.

curl \
  --data "grant_type=refresh_token" \
  --data "client_id=CLIENT_ID" \
  --data "client_secret=CLIENT_SECRET" \
  --data "refresh_token=REFRESH_TOKEN" \
  https://oauth2.googleapis.com/token

Você pode usar o token de acesso nas suas chamadas de API. O exemplo a seguir mostra como gerar um relatório de campanha usando o método GoogleAdsService.SearchStream para recuperar as campanhas na sua conta. Este guia não aborda os detalhes dos relatórios.

curl -i -X POST \
  https://googleads.googleapis.com/v26/customers/CUSTOMER_ID/googleAds:searchStream \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer ACCESS_TOKEN" \
  -H "login-customer-id: LOGIN_CUSTOMER_ID" \
  --data-binary "@query.json"

O conteúdo de query.json é o seguinte:

{
  "query": "SELECT campaign.id, campaign.name, campaign.network_settings.target_content_network FROM campaign ORDER BY campaign.id"
}