Mantieni tutto organizzato con le raccolte
Salva e classifica i contenuti in base alle tue preferenze.
Questa guida spiega come accedere all'API Google Ads con i service account.
Un service account è un account
che appartiene alla tua app anziché a un singolo utente finale. I service account
consentono interazioni tra server tra un'app web e un servizio Google.
La tua app chiama le API di Google per conto del service account, quindi gli utenti non sono
direttamente coinvolti.
I service account utilizzano un flusso OAuth 2.0 che non richiede l'autorizzazione umana, ma un file chiave accessibile solo alla tua app.
L'utilizzo degli account di servizio offre due vantaggi principali:
L'autorizzazione per l'accesso all'API Google viene eseguita come passaggio di configurazione, evitando così le complicazioni associate ad altri flussi OAuth 2.0 che richiedono interazioni con l'utente.
Il flusso di asserzione OAuth 2.0 consente alla tua app di assumere l'identità di altri utenti, se necessario.
Esistono due modi per autorizzare con gli account di servizio: direttamente o
con la simulazione dell'identità (non consigliato).
[Consigliato] Autorizzazione con accesso diretto all'account
In questa opzione, concedi al service account l'accesso diretto al tuo account Google Ads.
Scarica la chiave dell'account di servizio in formato JSON e annota l'ID e l'indirizzo email dell'account di servizio.
Accedi al tuo account Google Ads come amministratore. Vai ad Amministrazione > Accesso e sicurezza.
Fai clic sul pulsante + nella scheda Utenti.
Digita l'email del service account nella casella di input Email. Seleziona il
livello di accesso all'account appropriato e fai clic sul pulsante Aggiungi account. Tieni presente che i livelli di accesso amministrativo ed email non sono supportati per gli account di servizio.
All'account di servizio viene concesso l'accesso.
Configurazione della libreria client
Seleziona la scheda corrispondente al tuo linguaggio di programmazione per istruzioni su
come configurare la libreria client.
Java
Imposta il percorso JSON della chiave privata nella configurazione. Se utilizzi un file
ads.properties, aggiungi quanto segue:
Imposta il percorso JSON della chiave privata nella configurazione. Se utilizzi un
google-ads.yaml file, una stringa YAML o dict, aggiungi quanto segue:
json_key_file_path: JSON_KEY_FILE_PATH
Se utilizzi variabili di ambiente, aggiungi quanto segue alla configurazione o all'ambiente Bash:
Imposta il percorso JSON della chiave privata e l'ID account delegato nella configurazione. Se utilizzi un file googleads.properties, aggiungi quanto segue:
jsonKeyFilePath=JSON_KEY_FILE_PATH
Se utilizzi variabili di ambiente, aggiungi quanto segue alla configurazione o all'ambiente Bash:
[Sconsigliato] Autorizzazione tramite simulazione dell'identità
In questa opzione, simuli l'identità di un utente che ha accesso al tuo account Google Ads
utilizzando l'account di servizio. Questo approccio funziona solo per i clienti Google Workspace. Un account di servizio può rappresentare solo utenti (indirizzi email) nello stesso Google Workspace.
Un utente Google Ads con autorizzazioni per l'account Google Ads a cui vuoi accedere.
Configurazione dell'accesso al service account
Poiché l'impersonificazione dell'utente è controllata solo a livello di dominio, l'utilizzo di account di servizio e del flusso di asserzione con Google OAuth 2.0 richiede la registrazione del tuo dominio con Google Workspace. La tua app e i suoi utenti possono quindi
impersonare qualsiasi utente del dominio.
Imposta il percorso JSON della chiave privata e l'email rappresentata nella configurazione.
Se utilizzi un google-ads.yaml file, una stringa YAML o dict, aggiungi
quanto segue:
Imposta il percorso JSON della chiave privata e l'ID account delegato nella configurazione. Se utilizzi un file googleads.properties, aggiungi quanto segue:
Poiché l'account di servizio ha il controllo della delega a livello di dominio per il tuo dominio Google Workspace, è importante proteggere il file della chiave che consente a un account di servizio di accedere ai servizi Google per i quali è autorizzato. Ciò è
particolarmente vero in quanto questo service account ha la possibilità di rappresentare qualsiasi
utente nel dominio.
Un'altra buona pratica consiste nel consentire ai service account di accedere solo al set minimo
richiesto di API. Si tratta di una misura preventiva per limitare la quantità di dati
a cui un malintenzionato può accedere se il file delle chiavi dell'account di servizio viene compromesso.
[[["Facile da capire","easyToUnderstand","thumb-up"],["Il problema è stato risolto","solvedMyProblem","thumb-up"],["Altra","otherUp","thumb-up"]],[["Mancano le informazioni di cui ho bisogno","missingTheInformationINeed","thumb-down"],["Troppo complicato/troppi passaggi","tooComplicatedTooManySteps","thumb-down"],["Obsoleti","outOfDate","thumb-down"],["Problema di traduzione","translationIssue","thumb-down"],["Problema relativo a esempi/codice","samplesCodeIssue","thumb-down"],["Altra","otherDown","thumb-down"]],["Ultimo aggiornamento 2025-09-05 UTC."],[[["\u003cp\u003eThis guide explains how to use service accounts for server-to-server interactions with the Google Ads API, enabling app access without direct user involvement.\u003c/p\u003e\n"],["\u003cp\u003eService accounts offer simplified authorization and the ability to impersonate other users, though impersonation is a legacy approach and discouraged for security reasons.\u003c/p\u003e\n"],["\u003cp\u003eTwo authorization methods are detailed: direct access, granting the service account permissions to your Google Ads account, and impersonation (for Google Workspace users only), allowing the service account to act on behalf of a specific user.\u003c/p\u003e\n"],["\u003cp\u003eConfiguration instructions are provided for various client libraries (Java, .NET, Python, PHP, Ruby, Perl) to set up service account authentication.\u003c/p\u003e\n"],["\u003cp\u003eSecurity concerns are highlighted, emphasizing the importance of protecting the service account key file and limiting API access to minimize potential risks.\u003c/p\u003e\n"]]],[],null,["# Service Accounts\n\nThis guide discusses how to access the Google Ads API with service accounts.\n\nA [service account](/identity/protocols/OAuth2#serviceaccount) is an account\nthat belongs to your app instead of to an individual end user. Service accounts\nenable server-to-server interactions between a web app and a Google service.\nYour app calls Google APIs on behalf of the service account, so users aren't\ndirectly involved.\n\nService accounts employ an OAuth 2.0 flow that doesn't require human\nauthorization, using instead a key file that only your app can access.\n\nUsing service accounts provides two key benefits:\n\n- Authorization for Google API access is done as a configuration step, thus\n avoiding the complications associated with other OAuth 2.0 flows that require\n user interactions.\n\n- The OAuth 2.0 assertion flow lets your app impersonate other users if\n necessary.\n\nThere are two ways to authorize with service accounts: directly or\nwith impersonation (not recommended).\n\n\\[Recommended\\] Authorization with direct account access\n--------------------------------------------------------\n\nIn this option, you give the service account direct access to your Google Ads\naccount.\n\n\u003cbr /\u003e\n\n\u003cbr /\u003e\n\n### Account access setup\n\n1. Start by [creating a service account and credentials](/workspace/guides/create-credentials#service-account).\n\n Download the service account key in JSON format and note the service account\n ID and email.\n2. Sign in to your Google Ads account as an administrator. Navigate to **Admin \\\u003e Access and security**.\n\n3. Click the **+** button under the **Users** tab.\n\n4. Type the service account email into the **Email** input box. Select the\n appropriate level of account access level and click the **Add account**\n button. Note that Email and Admin access levels are not supported for service\n accounts.\n\n5. The service account is granted access.\n\n### Client library configuration\n\nSelect the tab corresponding to your programming language for instructions on\nhow to configure your client library. \n\n### Java\n\nSet the private key JSON path in your configuration. If you're using an\n`ads.properties` file, add the following: \n\n api.googleads.serviceAccountSecretsPath=\u003cvar translate=\"no\"\u003eJSON_KEY_FILE_PATH\u003c/var\u003e\n\nSee the [configuration guide](/google-ads/api/docs/client-libs/java/config-file) for\nadditional details.\n\n### .NET\n\nConfigure the following keys in your `App.config / Web.config`. See the\n[configuration guide](/google-ads/api/docs/client-libs/dotnet/configuration) for\nadditional details. \n\n \u003cadd key=\"OAuth2Mode\" value=\"SERVICE_ACCOUNT\" /\u003e\n \u003cadd key=\"OAuth2SecretsJsonPath\" value=\"\u003cvar translate=\"no\"\u003eJSON_KEY_FILE_PATH\u003c/var\u003e\" /\u003e\n\n### Python\n\nSet the private key JSON path in your configuration. If you're using a\n`google-ads.yaml file`, YAML string, or `dict`, add the following: \n\n json_key_file_path: \u003cvar translate=\"no\"\u003eJSON_KEY_FILE_PATH\u003c/var\u003e\n\nIf you're using environment variables, add the following to your Bash\nconfiguration or environment: \n\n export GOOGLE_ADS_JSON_KEY_FILE_PATH=\u003cvar translate=\"no\"\u003eJSON_KEY_FILE_PATH\u003c/var\u003e\n\n### PHP\n\nConfigure the following keys in your `google_ads_php.ini`. See the\n[configuration guide](/google-ads/api/docs/client-libs/php/configuration) for additional\ndetails. \n\n ; For service account flow.\n jsonKeyFilePath = \"\u003cvar translate=\"no\"\u003eJSON_KEY_FILE_PATH\u003c/var\u003e\"\n scopes = \"https://www.googleapis.com/auth/adwords\"\n\n### Ruby\n\nConfigure the following keys in your [`google_ads_config.rb`](//github.com/googleads/google-ads-ruby/blob/HEAD/google_ads_config.rb#L29). \n\n c.keyfile = '\u003cvar translate=\"no\"\u003eJSON_KEY_FILE_PATH\u003c/var\u003e'\n\n### Perl\n\nSet the private key JSON path and delegate account ID in your\nconfiguration. If you're using a `googleads.properties` file, add the\nfollowing: \n\n jsonKeyFilePath=\u003cvar translate=\"no\"\u003eJSON_KEY_FILE_PATH\u003c/var\u003e\n\nIf you're using environment variables, add the following to your Bash\nconfiguration or environment: \n\n export GOOGLE_ADS_JSON_KEY_FILE_PATH=\u003cvar translate=\"no\"\u003eJSON_KEY_FILE_PATH\u003c/var\u003e\n\n\\[Not Recommended\\] Authorization using impersonation\n-----------------------------------------------------\n\n| **Caution:** This is a legacy approach that works only for Google Workspace users. Its use is highly discouraged; this documentation is maintained only for reference purposes. Newer users should use the [Authorization with direct account access](#direct) approach, which works for all users including Google Workspace users and is simpler to configure and use.\n\nIn this option, you impersonate a user who has access to your Google Ads account\nusing the service account. This approach works only for Google Workspace\ncustomers. A service account can only impersonate users (email addresses) in\nthe same [Google Workspace](//workspace.google.com/).\n\n### Prerequisites\n\n- A [Google Workspace domain](//workspace.google.com/) that you own such as\n `mydomain.com` or `mybusiness.com`\n\n- A Google Ads API developer token and optionally a test account\n\n- The [client library](/google-ads/api/docs/client-libs) for the language you're using\n\n- A Google API Console project that has been [configured for the\n Google Ads API](/google-ads/api/docs/oauth/cloud-project#enable_the_in_your_project)\n\n- A Google Ads user with permissions on the Google Ads account you want to access.\n\n### Service account access setup\n\nSince user impersonation is controlled only at the domain level, using service\naccounts and assertion flow with Google OAuth 2.0 requires you to have your own\ndomain registered with Google Workspace. Your app and its users can then\nimpersonate any user in the domain.\n\n1. Start by [creating a service account and credentials](/workspace/guides/create-credentials#service-account).\n\n Download the service account key in JSON format and note the service account\n ID.\n2. Share the service account ID and the Google Ads API scope\n (`https://www.googleapis.com/auth/adwords`) with your domain administrator.\n\n Request the domain administrator to delegate domain-wide authority to your\n service account.\n3. If you're the domain administrator, complete the [help center\n instructions](//support.google.com/a/answer/162106).\n\nYou can now use the service account to access your Google Ads account with the\nOAuth 2.0 assertion flow.\n\n### Client library configuration\n\nSelect the tab corresponding to your programming language for instructions on\nhow to configure your client library. \n\n### Java\n\nSet the private key JSON path and delegate account ID in your configuration.\nIf you're using an `ads.properties` file, add the following: \n\n api.googleads.serviceAccountSecretsPath=\u003cvar translate=\"no\"\u003eJSON_KEY_FILE_PATH\u003c/var\u003e\n api.googleads.serviceAccountUser=\u003cvar translate=\"no\"\u003eIMPERSONATED_EMAIL\u003c/var\u003e\n\nSee the [configuration guide](/google-ads/api/docs/client-libs/java/config-file) for\nadditional details.\n\n### .NET\n\nConfigure the following keys in your `App.config / Web.config`. See the\nconfiguration guide for additional details. \n\n \u003cadd key=\"OAuth2Mode\" value=\"SERVICE_ACCOUNT\" /\u003e\n \u003cadd key=\"OAuth2SecretsJsonPath\" value=\"\u003cvar translate=\"no\"\u003eJSON_KEY_FILE_PATH\u003c/var\u003e\" /\u003e\n\n \u003c!-- Supply the email address of the user to impersonate. --\u003e\n \u003cadd key=\"OAuth2PrnEmail\" value=\"\u003cvar translate=\"no\"\u003eIMPERSONATED_EMAIL\u003c/var\u003e\" /\u003e\n\n### Python\n\nSet the private key JSON path and impersonated email in your configuration.\nIf you're using a `google-ads.yaml file`, YAML string, or `dict`, add the\nfollowing: \n\n json_key_file_path: \u003cvar translate=\"no\"\u003e\u003cspan class=\"devsite-syntax-l devsite-syntax-l-Scalar devsite-syntax-l-Scalar-Plain\"\u003eJSON_KEY_FILE_PATH\u003c/span\u003e\u003c/var\u003e\n impersonated_email: \u003cvar translate=\"no\"\u003e\u003cspan class=\"devsite-syntax-l devsite-syntax-l-Scalar devsite-syntax-l-Scalar-Plain\"\u003eIMPERSONATED_EMAIL\u003c/span\u003e\u003c/var\u003e\n\nIf you're using environment variables, add the following to your Bash\nconfiguration or environment: \n\n export GOOGLE_ADS_JSON_KEY_FILE_PATH=\u003cvar translate=\"no\"\u003eJSON_KEY_FILE_PATH\u003c/var\u003e\n export GOOGLE_ADS_IMPERSONATED_EMAIL=\u003cvar translate=\"no\"\u003eIMPERSONATED_EMAIL\u003c/var\u003e\n\n### PHP\n\nConfigure the following keys in your `google_ads_php.ini`. See the\n[configuration guide](/google-ads/api/docs/client-libs/php/configuration) for additional\ndetails. \n\n ; For service account flow.\n jsonKeyFilePath = \"\u003cvar translate=\"no\"\u003eJSON_KEY_FILE_PATH\u003c/var\u003e\"\n scopes = \"https://www.googleapis.com/auth/adwords\"\n impersonatedEmail = \"\u003cvar translate=\"no\"\u003eIMPERSONATED_EMAIL\u003c/var\u003e\"\n\n### Ruby\n\nConfigure the following keys in your [`google_ads_config.rb`](//github.com/googleads/google-ads-ruby/blob/HEAD/google_ads_config.rb#L29). \n\n c.keyfile = '\u003cvar translate=\"no\"\u003eJSON_KEY_FILE_PATH\u003c/var\u003e'\n c.impersonate = '\u003cvar translate=\"no\"\u003eIMPERSONATED_EMAIL\u003c/var\u003e'\n\n### Perl\n\nSet the private key JSON path and delegate account ID in your\nconfiguration. If you're using a `googleads.properties` file, add the\nfollowing: \n\n jsonKeyFilePath=\u003cvar translate=\"no\"\u003eJSON_KEY_FILE_PATH\u003c/var\u003e\n impersonatedEmail=\u003cvar translate=\"no\"\u003eIMPERSONATED_EMAIL\u003c/var\u003e\n\nIf you're using environment variables, add the following to your Bash\nconfiguration or environment: \n\n export GOOGLE_ADS_JSON_KEY_FILE_PATH=\u003cvar translate=\"no\"\u003eJSON_KEY_FILE_PATH\u003c/var\u003e\n export GOOGLE_ADS_IMPERSONATED_EMAIL=\u003cvar translate=\"no\"\u003eIMPERSONATED_EMAIL\u003c/var\u003e\n\n### Security concerns\n\nSince the service account has domain-level delegation control for your Google\nWorkspace domain, it's important to protect the key file that allows a service\naccount to access the Google services for which it's authorized. This is\nespecially true since that service account has the ability to impersonate any\nuser in the domain.\n\nAnother good practice is to allow service accounts to access only the minimum\nrequired set of APIs. This is a preemptive measure to limit the amount of data\nan attacker can access if the service account's key file is compromised."]]