Coinbase signs users in with their Coinbase account — a practical identity for crypto-adjacent products, and one that comes with a verified email.

## Copy the redirect URI

In the [Authdog console](https://console.authdog.com), select the project and environment, open **Authentication > Providers**, find **Coinbase**, and click **Enable**. Copy the redirect URI shown in the form:

```url
https://identity.authdog.com/api/v1/callback/<connectionId>
```

## Create the application

1. Open [Coinbase OAuth applications](https://www.coinbase.com/settings/api) and create a new OAuth2 application.
2. Name it and set the **Redirect URI** to the redirect URI from Authdog.
3. Request the `wallet:user:read` and `wallet:user:email` permissions.
4. Save, then copy the **Client ID** and **Client Secret**.

## Configure Authdog

| Field | Value |
| --- | --- |
| **Client ID** | The client identifier from the provider |
| **Client Secret** | The client secret from the provider |

Save, then toggle the connection **active**.

## What Coinbase returns

Authdog requests the `wallet:user:read wallet:user:email` scopes and reads the profile from `https://api.coinbase.com/v2/user`.

The user endpoint returns the Coinbase user id, name, avatar, and — with the email permission — the account email address.

Ask only for the user-scoped permissions. Wallet or transaction scopes turn a sign-in button into an authorization your users will refuse.

## Test it

1. Open your environment's hosted sign-in page, or link to `https://identity.authdog.com/api/v1/signin/<connectionId>`.
2. Select the Coinbase button and complete the flow.
3. Confirm the user appears under **Users** in the console with a Coinbase identity linked.

## Troubleshooting

| Symptom | Cause |
| --- | --- |
| `invalid_scope` | A requested permission is not enabled on the application |
| `invalid_request` | The redirect URI does not match the registered value |
| Redirect or callback URL error | The URI registered with the provider does not match Authdog's exactly |
| Works in one environment only | Each environment has its own `connectionId`, and so its own redirect URI to register |

## Related

| Read | To learn how to |
| --- | --- |
| [Connectors](/docs/connectors) | Set up any other social provider |
