Fluxo de trabalho de autenticação de vários usuários

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

  1. Para acessar a API Google Ads, configure seu aplicativo para autenticar o seguinte escopo:

    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 métricas da conta off-line para gerar relatórios e fazer análises. Por isso, recomendamos solicitar acesso off-line do OAuth.

  3. Você precisa passar pelo processo de verificação de apps OAuth e certificar seu app.

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 no tempo de execução usando as credenciais obtidas do usuário cujas contas você está fazendo chamadas de API.

UserCredentials credentials =
    UserCredentials.newBuilder()
        .setClientId(OAUTH_CLIENT_ID)
        .setClientSecret(OAUTH_CLIENT_SECRET)
        .setRefreshToken(REFRESH_TOKEN)
        .build();

// Creates a GoogleAdsClient with the provided credentials.
GoogleAdsClient client =
    GoogleAdsClient.newBuilder()
        // Sets the developer token which enables API access.
        .setDeveloperToken(DEVELOPER_TOKEN)
        // Sets the OAuth credentials which provide Google Ads account access.
        .setCredentials(credentials)
        // Optional: sets the login customer ID.
        .setLoginCustomerId(Long.valueOf(LOGIN_CUSTOMER_ID))
        .build();
``` See the [configuration guide][java-config-guide] for additional options.

.NET

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

GoogleAdsConfig googleAdsConfig = new GoogleAdsConfig()
{
    DeveloperToken = DEVELOPER_TOKEN,
    LoginCustomerId = LOGIN_CUSTOMER_ID,
    OAuth2ClientId = OAUTH_CLIENT_ID,
    OAuth2ClientSecret = OAUTH_CLIENT_SECRET,
    OAuth2RefreshToken = REFRESH_TOKEN,
};

GoogleAdsClient googleAdsClient = new GoogleAdsClient(googleAdsConfig);

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

Python

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

from google.ads.googleads.client import GoogleAdsClient

credentials = {
    "developer_token": "INSERT_DEVELOPER_TOKEN_HERE",
    "login_customer_id": "INSERT_LOGIN_CUSTOMER_ID_HERE",
    "refresh_token": "REFRESH_TOKEN",
    "client_id": "OAUTH_CLIENT_ID",
    "client_secret": "OAUTH_CLIENT_SECRET"}

client = GoogleAdsClient.load_from_dict(credentials)

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

PHP

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

$oAuth2Credential = (new OAuth2TokenBuilder())
->withClientId('INSERT_CLIENT_ID_HERE')
->withClientSecret('INSERT_CLIENT_SECRET_HERE')
->withRefreshToken('INSERT_REFRESH_TOKEN_HERE')
->build();

$googleAdsClient = (new GoogleAdsClientBuilder())
    ->withOAuth2Credential($oAuth2Credential)
    ->withDeveloperToken('INSERT_DEVELOPER_TOKEN_HERE')
    ->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 no tempo de execução usando as credenciais obtidas do usuário cujas contas você está fazendo chamadas de API.

  client = Google::Ads::GoogleAds::GoogleAdsClient.new do |config|
    config.client_id = 'INSERT_CLIENT_ID_HERE'
    config.client_secret = 'INSERT_CLIENT_SECRET_HERE'
    config.refresh_token = 'INSERT_REFRESH_TOKEN_HERE'
    config.login_customer_id = 'INSERT_LOGIN_CUSTOMER_ID_HERE'
    config.developer_token = 'INSERT_DEVELOPER_TOKEN_HERE'
  end

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

Perl

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

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

my $oauth2_applications_handler = $api_client->get_oauth2_applications_handler();
$oauth2_applications_handler->set_client_id("INSERT_CLIENT_ID");
$oauth2_applications_handler->set_client_secret("INSERT_CLIENT_SECRET");
$oauth2_applications_handler->set_refresh_token("INSERT_REFRESH_TOKEN");

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://www.googleapis.com/oauth2/v3/token

Agora 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/v21/customers/CUSTOMER_ID/googleAds:searchStream \
   -H "Content-Type: application/json" \
   -H "Authorization: Bearer ACCESS_TOKEN" \
   -H "developer-token: DEVELOPER_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"
}