Analogamente al flusso di lavoro dell'account di servizio, il flusso di autenticazione per un singolo utente utilizza le funzionalità di autorizzazione e gestione degli utenti offerte dalla UI Google Ads per concedere all'app l'accesso a tutti gli account necessari. Questo flusso di lavoro di autenticazione prevede due passaggi:
- Concedi a un singolo utente l'accesso a tutti gli account Google Ads che devono essere gestiti dall'app.
- L'utente autorizza la tua app a gestire i suoi account Google Ads per suo conto, concedendo così all'app l'accesso a tutti gli account Google Ads.
Poiché è coinvolto un solo utente, puoi utilizzare strumenti come l'interfaccia a riga di comando gcloud o l'esempio di codice GenerateUserCredential anziché creare un flusso di autenticazione utente OAuth 2.0 personalizzato.
Un caso d'uso correlato per questo flusso di lavoro si verifica quando è possibile accedere ai tuoi account tramite un numero limitato di accessi utente (ad esempio, da 3 a 4 utenti), quindi lo sforzo di sviluppo per creare un flusso di lavoro di autenticazione multiutente OAuth completo non è giustificato rispetto allo sforzo per ottenere l'autorizzazione per 3-4 utenti utilizzando uno strumento da riga di comando come gcloud CLI.
Svantaggi
Rispetto al workflow del service account, questo flusso presenta alcuni svantaggi:
- Il flusso di lavoro di autenticazione utente richiede la creazione di un ID client e un client secret OAuth 2.0 nella console Google Cloud, il che richiede più passaggi di configurazione rispetto alla creazione di un service account e di una chiave.
- Se l'utente autorizzato lascia il team o l'azienda, la tua app potrebbe smettere di funzionare se rimuovi l'utente dai tuoi account o disattivi il suo account. I service account non sono collegati a singoli utenti, quindi questo rischio viene evitato.
- L'utente che autorizza l'account Google Ads deve attivare le passkey nel proprio Account Google per proteggerlo da compromissioni dovute a sicurezza scarsa, malware o phishing. I service account non sono necessari per attivare le passkey e sono meno vulnerabili a questo problema, poiché alcune di queste modalità di attacco non si applicano direttamente.
Genera credenziali
Configura una schermata per il consenso OAuth per la tua applicazione e aggiungi
https://www.googleapis.com/auth/adwordscome ambito OAuth 2.0. Per maggiori dettagli, consulta Configurare la schermata per il consenso OAuth.Crea un ID client e un client secret seguendo le istruzioni. Dopo aver creato il client OAuth 2.0, scarica il file JSON del client facendo clic sul pulsante Scarica JSON nella finestra di dialogo di conferma. Salva il file come
credentials.json.Identifica un account utente che abbia accesso a tutti gli account Google Ads che vuoi gestire utilizzando la tua app. Se ci sono account con accesso mancante, concedi l'accesso all'account a quell'utente.
Scarica e installa gcloud CLI. Una volta installato, verifica che lo strumento funzioni correttamente eseguendo il comando
gcloud versionda un prompt della riga di comando. L'output è simile al seguente: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.0Genera un token di aggiornamento OAuth 2.0 eseguendo lo strumento gcloud CLI con il file
credentials.jsondel passaggio precedente. Il passaggio di--client-id-fileè obbligatorio in modo che il token di aggiornamento venga emesso nel tuo progetto della console API di Google anziché nel progetto predefinito di gcloud CLI: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_JSONIl comando
gcloudapre una finestra di accesso all'Account Google in una nuova finestra del browser e ti guida attraverso i passaggi di autenticazione OAuth 2.0. Assicurati di accedere come l'utente selezionato nei passaggi precedenti. Se la tua app è non verificata, potresti visualizzare una schermata di avviso. In questi casi, è sicuro fare clic sul link Avanzate e sull'opzione Vai a PROJECT_NAME (non sicuro).Dopo aver verificato gli ambiti, fai clic sul pulsante Continua per concedere l'autorizzazione. Il browser passa a
https://cloud.google.com/sdk/auth_success, indicando che l'autenticazione è andata a buon fine. Nella pagina viene visualizzato il seguente messaggio:Authorization code granted. Close this tab.Il comando
gcloudstampa il seguente messaggio:Credentials saved to file: [/****/.config/gcloud/application_default_credentials.json]Apri il file
application_default_credentials.json. I suoi contenuti sono simili ai seguenti:{ "account": "", "client_id": "******.apps.googleusercontent.com", "client_secret": "******", "refresh_token": "******", "type": "authorized_user", "universe_domain": "googleapis.com" }
Configurazione della libreria client
Seleziona la scheda corrispondente al tuo linguaggio di programmazione per istruzioni su
come configurare la libreria client. Se l'utente autorizzato accede agli account cliente tramite un account amministratore Google Ads (Centro clienti), imposta login-customer-id (o loginCustomerId) sull'ID cliente di 10 cifre dell'account amministratore senza trattini.
Java
Configura le seguenti chiavi nel file 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
Per altre opzioni, consulta la guida alla configurazione.
.NET
Imposta le credenziali OAuth 2.0 sull'istanza GoogleAdsConfig e utilizzale
per inizializzare l'oggetto 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);
Per altre opzioni, consulta la guida alla configurazione.
Python
Configura le seguenti chiavi nel file 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
Per altre opzioni, consulta la guida alla configurazione.
PHP
Configura le seguenti chiavi in 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"
Per altre opzioni, consulta la guida alla configurazione.
Ruby
Configura le seguenti chiavi nel file
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
Per altre opzioni, consulta la guida alla configurazione.
Perl
Configura le seguenti chiavi nel file 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
Per altre opzioni, consulta la guida alla configurazione.
curl
Inizia utilizzando un client HTTP per recuperare un token di accesso OAuth 2.0. Questa guida
utilizza il 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/tokenPuoi utilizzare il token di accesso nelle chiamate API. L'esempio seguente
mostra come generare un report sulle campagne utilizzando il
metodo GoogleAdsService.SearchStream per recuperare le
campagne nel tuo account. Questa guida non copre i dettagli delle
segnalazioni.
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"I contenuti di query.json sono i seguenti:
{
"query": "SELECT campaign.id, campaign.name, campaign.network_settings.target_content_network FROM campaign ORDER BY campaign.id"
}