Semelhante ao fluxo de trabalho da conta de serviço, o fluxo de autenticação de usuário único usa os recursos de autorização e gerenciamento de usuários oferecidos pela interface do Google Ads para conceder ao app acesso a todas as contas necessárias. Esse fluxo de trabalho de autenticação tem duas etapas:
- Conceda a um único usuário acesso a todas as contas do Google Ads que devem ser gerenciadas pelo app.
- O usuário autoriza seu app a gerenciar as contas do Google Ads em nome dele, concedendo ao app acesso a todas as contas do Google Ads.
Como há apenas um usuário envolvido, é possível usar ferramentas como a gcloud CLI ou o exemplo de código GenerateUserCredential em vez de criar seu próprio fluxo de autenticação de usuário do OAuth 2.0.
Um caso de uso relacionado para esse fluxo de trabalho é quando suas contas podem ser acessadas por meio de alguns logins de usuário (por exemplo, 3 a 4 usuários). Assim, o esforço de desenvolvimento para criar um fluxo de trabalho de autenticação multiusuário do OAuth completo não é justificado quando comparado ao esforço para receber autorização para 3 a 4 usuários usando uma ferramenta de linha de comando, como a CLI gcloud.
Desvantagens
Há algumas desvantagens nesse fluxo em comparação com o fluxo de trabalho da conta de serviço:
- O fluxo de trabalho de autenticação do usuário exige que você crie um ID do cliente OAuth 2.0 e uma chave secreta no Console de APIs do Google, o que requer mais etapas de configuração do que criar uma conta de serviço e uma chave.
- Se o usuário autorizado sair da equipe ou da empresa, o app poderá parar de funcionar se você remover o usuário das suas contas ou desativar a conta dele. As contas de serviço não estão vinculadas a usuários individuais, portanto, esse risco é evitado.
- Para proteger contra o comprometimento da conta por malware ou phishing, o usuário que autoriza a conta do Google Ads precisa se autenticar com uma chave de acesso ao gerar tokens de atualização do OAuth 2.0. As contas de serviço não exigem chaves de acesso e são menos vulneráveis a ataques direcionados ao usuário, como phishing.
Gerar credenciais
Configure uma tela de permissão OAuth para seu aplicativo e adicione
https://www.googleapis.com/auth/adwordscomo um escopo do OAuth 2.0. Consulte Como configurar a tela de permissão OAuth para mais detalhes.Crie um ID do cliente e uma chave secreta do cliente seguindo as instruções. Depois de criar o cliente OAuth 2.0, baixe o arquivo JSON dele clicando no botão Fazer o download do JSON na caixa de diálogo de confirmação. Salve o arquivo como
credentials.json.Identifique uma conta de usuário que tenha acesso a todas as contas do Google Ads que você quer gerenciar usando seu app. Se houver contas sem acesso, conceda acesso à conta para esse usuário. Verifique se essa conta de usuário configurou uma chave de acesso (pode haver um atraso de segurança de sete dias até que uma chave de acesso recém-criada se torne confiável).
Faça o download e instale a CLI gcloud. Depois de instalada, verifique se a ferramenta funciona corretamente executando o comando
gcloud versionem um prompt de linha de comando. A saída será assim:gcloud versionGoogle Cloud SDK 492.0.0 alpha 2024.09.06 beta 2024.09.06 bq 2.1.8 bundled-python3-unix 3.11.9 core 2024.09.06 enterprise-certificate-proxy 0.3.2 gcloud-crc32c 1.0.0Gere um token de atualização do OAuth 2.0 executando a ferramenta da CLI gcloud com o arquivo
credentials.jsonda etapa anterior. É necessário transmitir o parâmetro--client-id-filepara que o token de atualização seja emitido no projeto do Console de APIs do Google, em vez do projeto padrão da CLI gcloud:gcloud auth application-default login \ --scopes=https://www.googleapis.com/auth/adwords,https://www.googleapis.com/auth/cloud-platform \ --client-id-file=PATH_TO_CREDENTIALS_JSONO comando
gcloudabre uma janela de login da Conta do Google em uma nova janela do navegador e orienta você pelas etapas de autenticação do OAuth 2.0. Faça login como o usuário selecionado nas etapas anteriores e verifique sua identidade usando uma chave de acesso. Se o app não estiver verificado, talvez uma tela de aviso seja exibida. Nesses casos, é seguro clicar no link Avançado e na opção Acessar PROJECT_NAME (não seguro).Depois de verificar os escopos, clique no botão Continuar para conceder permissão. O navegador acessa
https://cloud.google.com/sdk/auth_success, indicando que a autenticação foi bem-sucedida. A página mostra a seguinte mensagem:Authorization code granted. Close this tab.O comando
gcloudmostra a seguinte mensagem:Credentials saved to file: [/****/.config/gcloud/application_default_credentials.json]Abra o arquivo
application_default_credentials.json. O conteúdo é semelhante ao seguinte:{ "account": "", "client_id": "******.apps.googleusercontent.com", "client_secret": "******", "refresh_token": "******", "type": "authorized_user", "universe_domain": "googleapis.com" }
Configuração da biblioteca de cliente
Selecione a guia correspondente à sua linguagem de programação para ver instruções sobre
como configurar a biblioteca de cliente. Se o usuário autorizado acessar contas de cliente por uma conta de administrador do Google Ads, defina login-customer-id (ou loginCustomerId) como o ID de cliente de 10 dígitos dessa conta de administrador sem hifens.
Java
Configure as seguintes chaves no arquivo ads.properties.
api.googleads.clientId=INSERT_OAUTH2_CLIENT_ID_HERE
api.googleads.clientSecret=INSERT_OAUTH2_CLIENT_SECRET_HERE
api.googleads.refreshToken=INSERT_OAUTH2_REFRESH_TOKEN_HERE
api.googleads.loginCustomerId=INSERT_LOGIN_CUSTOMER_ID_HERE
Consulte o guia de configuração para mais opções.
.NET
Defina as credenciais do OAuth 2.0 na instância GoogleAdsConfig e use-as
para inicializar o objeto GoogleAdsClient.
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
Configure as seguintes chaves no arquivo google-ads.yaml.
client_id: INSERT_OAUTH2_CLIENT_ID_HERE
client_secret: INSERT_OAUTH2_CLIENT_SECRET_HERE
refresh_token: INSERT_OAUTH2_REFRESH_TOKEN_HERE
login_customer_id: INSERT_LOGIN_CUSTOMER_ID_HERE
use_proto_plus: True
Consulte o guia de configuração para mais opções.
PHP
Configure as seguintes chaves no arquivo google_ads_php.ini.
[GOOGLE_ADS]
loginCustomerId = "INSERT_LOGIN_CUSTOMER_ID_HERE"
[OAUTH2]
clientId = "INSERT_OAUTH2_CLIENT_ID_HERE"
clientSecret = "INSERT_OAUTH2_CLIENT_SECRET_HERE"
refreshToken = "INSERT_OAUTH2_REFRESH_TOKEN_HERE"
Consulte o guia de configuração para mais opções.
Ruby
Configure as seguintes chaves no arquivo
google_ads_config.rb.
Google::Ads::GoogleAds::Config.new do |c|
c.client_id = 'INSERT_OAUTH2_CLIENT_ID_HERE'
c.client_secret = 'INSERT_OAUTH2_CLIENT_SECRET_HERE'
c.refresh_token = 'INSERT_OAUTH2_REFRESH_TOKEN_HERE'
c.login_customer_id = 'INSERT_LOGIN_CUSTOMER_ID_HERE'
end
Consulte o guia de configuração para mais opções.
Perl
Configure as seguintes chaves no arquivo googleads.properties.
clientId=INSERT_OAUTH2_CLIENT_ID_HERE
clientSecret=INSERT_OAUTH2_CLIENT_SECRET_HERE
refreshToken=INSERT_OAUTH2_REFRESH_TOKEN_HERE
loginCustomerId=INSERT_LOGIN_CUSTOMER_ID_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/tokenVocê 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"
}