**Note:** This document describes the
three-legged OAuth2 flow used to request access to other parties'
data. Use this authentication flow if you're developing a
third-party application that needs access to your clients'
Merchant Center accounts. If you are developing an in-house application that
will only access your own Merchant Center account, please look at
the [Service
Accounts](https://developers.google.com/shopping-content/guides/how-tos/service-accounts) guide instead.

Every request your application sends to the Google Content API for Shopping must include an authorization token. The token also identifies your application to Google.

## About authorization protocols

Your application must use [OAuth 2.0](https://developers.google.com/identity/protocols/OAuth2) to authorize requests. No other authorization protocols are supported. If your application uses [Sign In With Google](https://developers.google.com/identity/gsi/web), some aspects of authorization are handled for you.

## Authorizing requests with OAuth 2.0

All requests to the Google Content API for Shopping must be authorized by an authenticated user.

The details of the authorization process, or "flow," for OAuth 2.0 vary somewhat depending on what kind of application you're writing. The following general process applies to all application types:

1. When you create your application, you register it using the [Google API Console](https://console.cloud.google.com/). Google then provides information you'll need later, such as a client ID and a client secret.
2. Activate the Google Content API for Shopping in the Google API Console. (If the API isn't listed in the API Console, then skip this step.)
3. When your application needs access to user data, it asks Google for a particular **scope** of access.
4. Google displays a **consent screen** to the user, asking them to authorize your application to request some of their data.
5. If the user approves, then Google gives your application a short-lived **access token**.
6. Your application requests user data, attaching the access token to the request.
7. If Google determines that your request and the token are valid, it returns the requested data.

Some flows include additional steps, such as using **refresh tokens** to acquire new access tokens. For detailed information about flows for various types of applications, see Google's [OAuth 2.0 documentation](https://developers.google.com/identity/protocols/OAuth2).

Here's the OAuth 2.0 scope information for the Google Content API for Shopping:

| Scope | Meaning |
|---|---|
| `https://www.googleapis.com/auth/content` | Read/write access. |

To request access using OAuth 2.0, your application needs the scope information, as well as
information that Google supplies when you register your application (such as the client ID and the
client secret).

**Tip:** The Google APIs client libraries can handle some of the authorization process for you. They are available for a variety of programming languages; check the [page with libraries and samples](https://developers.google.com/shopping-content/v2/libraries) for more details.

## Get OAuth scopes


We recommend using [incremental
authorization](https://developers.google.com/identity/protocols/oauth2/web-server#incrementalAuth) to avoid problems with scope selection.


[OAuth scopes](https://developers.google.com/identity/protocols/oauth2/scopes) are
unselected by default in the consent screen for your app if you request more than one. When your app
presents the consent screen to a user, they have to manually select each scope to authorize access.


Check the response from an OAuth request to verify that you received the appropriate scopes.


See the [OAuth 2.0 Policies](https://developers.google.com/identity/protocols/oauth2/policies#unbundled-consent) page
for more details.

## Request app verification


Any apps that access the Content API must go through the OAuth verification review process. Users of
unverified apps that access the Content API will receive [warnings](https://support.google.com/cloud/answer/7454865) and the apps will have [limited functionality](https://support.google.com/cloud/answer/7454865#unverified-app-user-cap).
An app, in this context, is defined as a unique OAuth 2.0 Client ID in Google Cloud.


The verification process typically takes 3-5 business days to complete. To learn more about about
the process and to submit a request for verification, refer to [Verification for apps.](https://support.google.com/cloud/answer/7454865#verification)


This policy applies to all apps, and we recommend that all apps undergo the Google OAuth
verification process at their earliest convenience to avoid any business interruptions.

## Authorization Example


The following code demonstrates how to configure your client and authorize requests using OAuth 2.0
for web applications. Other languages are available at our [Samples and Libraries](https://developers.google.com/shopping-content/guides/libraries) page.

## PHP

This example uses the [Web Application flow](https://developers.google.com/accounts/docs/OAuth2WebServer). The redirect URI should be the URI of this PHP page.

```php
<?php
require_once 'Google/Client.php';

session_start();

$client = new Google_Client();
$client->setApplicationName('Sample Content API application');
$client->setClientId('YOUR_CLIENT_ID');
$client->setClientSecret('YOUR_CLIENT_SECRET');
$client->setRedirectUri('YOUR_REDIRECT_URI');
$client->setScopes('https://www.googleapis.com/auth/content');

if (isset($_SESSION['oauth_access_token'])) {
  $client->setAccessToken($_SESSION['oauth_access_token']);
} elseif (isset($_GET['code'])) {
  $token = $client->authenticate($_GET['code']);
  $_SESSION['oauth_access_token'] = $token;
} else {
  header('Location: ' . $client->createAuthUrl());
  exit;
}
```

Now that you have authenticated, you can create a Service object to make API requests with.

```php
require_once 'Google/Service/ShoppingContent.php';

$service = new Google_Service_ShoppingContent($client);
```