Autenticazione e autorizzazione

Come altre API di Google, l'API Google Ads utilizza il protocollo OAuth 2.0 per l'autenticazione e l'autorizzazione. OAuth 2.0 consente all'app client .NET dell'API Google Ads di accedere all'account Google Ads di un utente senza dover gestire o archiviare le informazioni di accesso dell'utente.

Informazioni sul modello di accesso a Google Ads

Per lavorare in modo efficace con l'API Google Ads, devi comprendere come funziona il modello di accesso a Google Ads. Consulta la guida al modello di accesso a Google Ads.

Flussi di lavoro OAuth

Esistono tre flussi di lavoro comuni utilizzati quando si lavora con l'API Google Ads.

Flusso del service account

Questo è il flusso di lavoro consigliato se la tua applicazione non richiede alcuna interazione umana. Questo flusso di lavoro richiede un passaggio di configurazione, in cui l'utente aggiunge un service account al proprio account Google Ads. L'app può quindi utilizzare le credenziali del service account per gestire l'account Google Ads dell'utente.

Configura la libreria come segue:

// Initialize a GoogleAdsConfig instance.
GoogleAdsConfig config = new GoogleAdsConfig()
{
    OAuth2Mode = OAuth2Flow.SERVICE_ACCOUNT,
    OAuth2SecretsJsonPath = "PATH_TO_CREDENTIALS_JSON",
    LoginCustomerId = "INSERT_LOGIN_CUSTOMER_ID_HERE"
};

// Initialize a GoogleAdsClient instance.
GoogleAdsClient client = new GoogleAdsClient(config);

Per saperne di più, consulta la guida al flusso di lavoro del service account.

Flusso di autenticazione di un singolo utente

Questo flusso di lavoro può essere utilizzato se non puoi utilizzare i service account. Questo flusso di lavoro richiede due passaggi di configurazione:

  1. Concedi a un singolo utente l'accesso a tutti gli account da gestire utilizzando l'API Google Ads. Un approccio comune consiste nel concedere all'utente l'accesso a un account amministratore dell'API Google Ads e collegare tutti gli account Google Ads a questo account amministratore.
  2. L'utente esegue uno strumento a riga di comando come gcloud o l'esempio di codice GenerateUserCredentials per autorizzare la tua app a gestire tutti i suoi account Google Ads per suo conto.

Inizializza la libreria utilizzando le credenziali OAuth 2.0 dell'utente come segue:

GoogleAdsConfig config = new GoogleAdsConfig()
{
    LoginCustomerId = "INSERT_LOGIN_CUSTOMER_ID_HERE",
    OAuth2ClientId = "INSERT_OAUTH_CLIENT_ID_HERE",
    OAuth2ClientSecret = "INSERT_OAUTH_CLIENT_SECRET_HERE",
    OAuth2RefreshToken = "INSERT_REFRESH_TOKEN_HERE"
};

GoogleAdsClient client = new GoogleAdsClient(config);

Per saperne di più, consulta la guida al flusso di lavoro di autenticazione di un singolo utente.

Flusso di autenticazione multiutente

Questo è il flusso di lavoro consigliato se la tua app consente agli utenti di accedere e autorizzare la tua app a gestire i propri account Google Ads per loro conto. La tua app crea e gestisce dinamicamente le credenziali utente OAuth 2.0 per sessione o richiesta utente, quindi inizializza un GoogleAdsClient con il token di aggiornamento dell'utente attivo:

GoogleAdsConfig config = new GoogleAdsConfig()
{
    LoginCustomerId = userSession.LoginCustomerId,
    OAuth2ClientId = "INSERT_OAUTH_CLIENT_ID_HERE",
    OAuth2ClientSecret = "INSERT_OAUTH_CLIENT_SECRET_HERE",
    OAuth2RefreshToken = userSession.RefreshToken
};

GoogleAdsClient client = new GoogleAdsClient(config);

A partire da Google.Ads.GoogleAds v27.0.0, puoi anche inserire un oggetto ICredential o GoogleCredential preconfigurato direttamente su GoogleAdsConfig utilizzando la proprietà Credentials.

Per saperne di più, consulta la guida al flusso di lavoro di autenticazione multiutente per saperne di più. La libreria client .NET include due esempi di codice di riferimento:

  1. L'esempio di codice AuthenticateInAspNetCoreApplication illustra come creare un'app web che ottiene l'autenticazione utente in fase di runtime per gestire i suoi account Google Ads per suo conto. L'app utilizza le credenziali OAuth 2.0 dell'utente per recuperare le campagne nel suo account Google Ads.
  2. L'esempio di codice da riga di comando GenerateUserCredentials illustra come ottenere l'autenticazione utente in fase di runtime per gestire i suoi account Google Ads per suo conto. Puoi utilizzare questo esempio di codice come riferimento per creare app desktop che richiedono l'autenticazione utente.

Che cosa succede se l'utente gestisce più account?

È normale che un utente gestisca più di un account Google Ads, tramite l'accesso diretto agli account o tramite un account amministratore Google Ads. La libreria client .NET fornisce i seguenti esempi di codice che illustrano come gestire questi casi:

  1. L'esempio di codice GetAccountHierarchy mostra come recuperare l'elenco di tutti gli account di un account amministratore Google Ads.
  2. L'esempio di codice ListAccessibleCustomersmostra come recuperare l'elenco di tutti gli account a cui un utente ha accesso diretto a. Questi account possono essere utilizzati come valori validi per l'impostazione LoginCustomerId.

Credenziali predefinite dell'applicazione

La libreria client .NET (v24.1.0 e versioni successive) supporta anche l'autenticazione con le Credenziali predefinite dell'applicazione.

Questo è particolarmente utile per lo sviluppo locale o per lo sviluppo con diverse API di Google, in quanto puoi riutilizzare le stesse credenziali, a condizione che possano accedere agli ambiti OAuth 2.0 richiesti.

Per l'API Google Ads, assicurati che le Credenziali predefinite dell'applicazione possano accedere all'ambito OAuth 2.0 https://www.googleapis.com/auth/adwords.

Per utilizzare le Credenziali predefinite dell'applicazione, imposta l' UseApplicationDefaultCredentialsopzione su true in GoogleAdsConfig (o imposta la variabile di ambiente USE_APPLICATION_DEFAULT_CREDENTIALS=true quando carichi la configurazione con config.LoadFromEnvironmentVariables()):

GoogleAdsConfig config = new GoogleAdsConfig()
{
    UseApplicationDefaultCredentials = true,
    LoginCustomerId = "INSERT_LOGIN_CUSTOMER_ID_HERE"
};
GoogleAdsClient client = new GoogleAdsClient(config);

Per ulteriori dettagli sulle opzioni disponibili per configurare la libreria client .NET, consulta la pagina di configurazione.