This guide explains how to use [OAuth 2.0](https://developers.google.com/identity/protocols/OAuth2) to
request access to other parties' merchant center accounts. If you're a
third-party provider, use this workflow to let your app request access to your
clients' Merchant Center accounts.

If you're developing an in-house app that needs access to only your Merchant
Center account, see [access your account](https://developers.google.com/merchant/api/guides/authorization/access-your-account)
instead.

## Request app verification

Apps that access the Merchant API must go through the OAuth verification review
process. Unverified apps will receive [warnings](https://support.google.com/cloud/answer/7454865)
and have [limited functionality](https://support.google.com/cloud/answer/7454865#unverified-app-user-cap).

An app is anything with a unique OAuth 2.0 Client ID in Google Cloud.

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

This policy applies to all apps. We recommend all apps undergo the verification
process as early as possible to avoid business interruptions.

## Get OAuth scopes

Set up [incremental authorization](https://developers.google.com/identity/protocols/oauth2/web-server#incrementalAuth)
to avoid issues with scope selection.

All [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, the user has to
manually select each scope to authorize access.

To use Merchant API, your app must request the following scope on the OAuth
consent screen:

    https://www.googleapis.com/auth/content

Check the response from an OAuth request to verify that your app received this
scope.

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

## Authorize requests

Every request your application sends to the Merchant API 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 Merchant API 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 Merchant API 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 Merchant API:

| 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).

Here's a [sample](https://developers.google.com/merchant/api/samples/authorization) you can use for
authorization.