Stay organized with collections
Save and categorize content based on your preferences.
This guide walks you through how to set up OAuth 2.0 for API access using your
own credentials and either the desktop flow
or the web flow. These steps only need
to be done once, unless you revoke, delete, or need to change the allowed scopes
for your OAuth 2.0 credentials.
Note the client ID and client secret, then come back to this page.
Set up the client library
In a terminal, run the generate_user_credentials.pl example. You can either modify the
INSERT_XXX_HERE values in the example before running or use the command-line
arguments -client_id for client ID and -client_secret for
client secret.
This code example prompts you to visit a URL where you must authorize the app to access
your Google Ads account on your behalf.
Paste this url in your browser:
https://accounts.google.com/o/oauth2/v2/auth?response_type=code&access_type=offline&client_id=...
Navigate to the URL in a private browser session or an incognito window. Sign in
with the Google Account you use to access Google Ads. Usually, this is a login email to a
Google Ads manager account that contains all the accounts you need to manage under its
account hierarchy. Click Continue on the OAuth 2.0 consent screen.
You'll be taken to a page with a message indicating that the authorization succeeded.
Authorization code was successfully retrieved.
Return to the console where you're running the code example. You'll see that the
code example has completed and is displaying your refresh token and some instructions,
followed by the instructions you'll need to follow to configure the client library:
Replace the following keys and values in your googleads.properties configuration file:
clientId==***********************apps.googleusercontent.com
clientSecret=****
refreshToken=****
Press Ctrl + C to terminate the process. Then copy the generated
refresh token along with the client ID and client secret into your
googleads.properties file or save it somewhere else to use if
instantiating the library at runtime.
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Missing the information I need","missingTheInformationINeed","thumb-down"],["Too complicated / too many steps","tooComplicatedTooManySteps","thumb-down"],["Out of date","outOfDate","thumb-down"],["Samples / code issue","samplesCodeIssue","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2025-08-20 UTC."],[[["\u003cp\u003eThis guide provides instructions on setting up OAuth2 for API access using your own credentials.\u003c/p\u003e\n"],["\u003cp\u003eYou can set this up using either the desktop or web flow, requiring a one-time setup unless credentials are modified.\u003c/p\u003e\n"],["\u003cp\u003eThe process involves creating OAuth2 credentials, setting up the client library, and authorizing access to your Google Ads account.\u003c/p\u003e\n"],["\u003cp\u003eYou'll need to obtain a refresh token, client ID, and client secret to configure the client library for API access.\u003c/p\u003e\n"]]],[],null,["This guide walks you through how to set up OAuth 2.0 for API access using your\nown credentials and either the [desktop flow](/identity/protocols/oauth2/native-app)\nor the [web flow](/identity/protocols/oauth2/web-server). These steps only need\nto be done once, unless you revoke, delete, or need to change the allowed scopes\nfor your OAuth 2.0 credentials.\n\nCreate OAuth 2.0 credentials\n\n1. Follow the steps to [configure a Google API Console project for the\n Google Ads API](/google-ads/api/docs/oauth/cloud-project).\n\n2. Note the *client ID* and *client secret*, then come back to this page.\n\nSet up the client library The following steps run an interactive code example, which will require you to provide input.\n\n1. In a terminal, run the [`generate_user_credentials.pl`](https://github.com/googleads/google-ads-perl/blob/HEAD/examples/authentication/generate_user_credentials.pl) example. You can either modify the\n `INSERT_XXX_HERE` values in the example before running or use the command-line\n arguments `-client_id` for client ID and `-client_secret` for\n client secret.\n\n ```\n perl generate_user_credentials.pl -client_id {client_id} -client_secret {client_secret}\n ```\n2. This code example prompts you to visit a URL where you must authorize the app to access\n your Google Ads account on your behalf.\n\n ```\n Paste this url in your browser:\n https://accounts.google.com/o/oauth2/v2/auth?response_type=code&access_type=offline&client_id=...\n ```\n\n Navigate to the URL in a private browser session or an incognito window. Sign in\n with the Google Account you use to access Google Ads. Usually, this is a login email to a\n Google Ads manager account that contains all the accounts you need to manage under its\n account hierarchy. Click **Continue** on the OAuth 2.0 consent screen.\n\n You'll be taken to a page with a message indicating that the authorization succeeded. \n\n ```\n Authorization code was successfully retrieved.\n ```\n3. Return to the console where you're running the code example. You'll see that the\n code example has completed and is displaying your refresh token and some instructions,\n followed by the instructions you'll need to follow to configure the client library:\n\n ```scdoc\n Replace the following keys and values in your googleads.properties configuration file:\n\n clientId==***********************apps.googleusercontent.com\n clientSecret=****\n refreshToken=****\n ```\n4. Press `Ctrl + C` to terminate the process. Then copy the generated\n refresh token along with the client ID and client secret into your\n `googleads.properties` file or save it somewhere else to use if\n instantiating the library at runtime."]]