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.
Download the client's JSON file by first clicking its Download OAuth
client icon and then the DOWNLOAD JSON button on the following screen.
Save the file to your home directory so that you now have the local file
~/client_secret_XXX.apps.googleusercontent.com.json (where XXX will be
values specific to your project). We'll use this file in the next step to
run the code example.
Set up the client library
In a terminal, run the generate_user_credentialscode example. Use command line flags to pass it the
JSON file you downloaded in the previous step.
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/auth?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.
Your refresh token has been fetched. Check the console output for further instructions.
Return to the console where you ran 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:
Your refresh token is: 1/Yw.........................................
Add your refresh token to your client library configuration as described here:
https://developers.google.com/google-ads/api/docs/client-libs/python/configuration
[[["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-28 UTC."],[[["\u003cp\u003eThis guide explains how to set up OAuth2 for API access using your own credentials.\u003c/p\u003e\n"],["\u003cp\u003eYou can use either the desktop flow or the web flow to complete this setup.\u003c/p\u003e\n"],["\u003cp\u003eThe setup involves creating OAuth2 credentials, downloading a JSON file, and running a script to generate user credentials.\u003c/p\u003e\n"],["\u003cp\u003eYou will need to authorize the credentials to access your Google Ads account.\u003c/p\u003e\n"],["\u003cp\u003eUpon successful authorization, you'll receive a refresh token to configure your client library.\u003c/p\u003e\n"]]],[],null,["# OAuth Desktop and Web Application Flows\n\nThis 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----------------------------\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. Download the client's JSON file by first clicking its **Download OAuth\n client** icon and then the **DOWNLOAD JSON** button on the following screen.\n\n Save the file to your home directory so that you now have the local file\n `~/client_secret_XXX.apps.googleusercontent.com.json` (where XXX will be\n values specific to your project). We'll use this file in the next step to\n run the code example.\n\nSet up the client library\n-------------------------\n\n| 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`](https://github.com/googleads/google-ads-python/blob/HEAD/examples/authentication/generate_user_credentials.py)code example. Use command line flags to pass it the\n JSON file you downloaded in the previous step.\n\n ```\n generate_user_credentials.py \\\n --client_secrets_path=${HOME}/client_secret_XXX.apps.googleusercontent.com.json\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/auth?access_type=offline&client_id=****...\n ```\n\n Navigate to the URL in a private browser session or an incognito window.\n Sign in with the Google Account you use to access Google Ads. Usually, this is a login email\n to a Google Ads manager account that contains all the accounts you need to manage under\n its 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 Your refresh token has been fetched. Check the console output for further instructions.\n ```\n3. Return to the console where you ran the code example.You'll see that the code example has\n completed and is displaying your refresh token and some instructions, followed by the\n instructions you'll need to follow to configure the client library:\n\n ```\n Your refresh token is: 1/Yw.........................................\n Add your refresh token to your client library configuration as described here:\n https://developers.google.com/google-ads/api/docs/client-libs/python/configuration\n ```"]]