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 no console do Google Cloud necessária para oferecer suporte a cada tipo de app. Todos esses tipos de apps são compatíveis com a API Google Ads. Outros detalhes técnicos importantes:

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

    https://www.googleapis.com/auth/adwords
    
  2. Talvez seu app precise fazer chamadas de API em nome do usuário enquanto ele está off-line. Um cenário comum é baixar as métricas da conta off-line para gerar relatórios e fazer análises. Por isso, recomendamos solicitar o acesso off-line do OAuth.

  3. Conclua o processo de verificação do app OAuth para verificar seu app.

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. Direcione os usuários para a tela de permissão do 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.
  2. Troque 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 por um token de acesso e um token de atualização.
  3. Armazenar tokens e inicializar o cliente em tempo 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 sua instância GoogleAdsClient em tempo de execução.

Configuração da biblioteca de cliente

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

Java

É possível inicializar sua instância GoogleAdsClient em tempo de execução usando as credenciais obtidas do usuário cujas contas você está chamando APIs.

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 sua instância GoogleAdsClient em tempo de execução usando as credenciais obtidas do usuário cujas contas você está chamando APIs.

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 sua instância GoogleAdsClient em tempo de execução usando as credenciais obtidas do usuário cujas contas você está chamando APIs.

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 sua instância GoogleAdsClient em tempo de execução usando as credenciais obtidas do usuário cujas contas você está chamando APIs.

$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 sua instância GoogleAdsClient em tempo de execução usando as credenciais obtidas do usuário cujas contas você está chamando APIs.

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 sua instância GoogleAdsClient em tempo de execução usando as credenciais obtidas do usuário cujas contas você está chamando APIs.

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 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 executar 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 da criação de relatórios.

curl -i -X POST \
  https://googleads.googleapis.com/v25/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"
}