> ## Documentation Index
> Fetch the complete documentation index at: https://docs.hexclave.com/llms.txt
> Use this file to discover all available pages before exploring further.

# ConnectedAccount

> Reference for ConnectedAccount types for OAuth connections.

`OAuthConnection` represents an OAuth connection to an external provider (like Google, GitHub, etc.) that is linked to a user. You can use connected accounts to access the user's data on those platforms, such as reading Google Drive files or sending emails via Gmail.For a guide on how to use connected accounts, see the [Connected Accounts guide](https://docs.hexclave.com/guides/apps/authentication/connected-accounts.md).On this page:- [`Connection`](#connection)
- [`OAuthConnection`](#oauthconnection)# `Connection`Basic information about a connected account. This is the base type that `OAuthConnection` extends.## Table of ContentsConnection Table of Contents<pre />## Properties

\<details>

\<summary>`connection.id`
          
            deprecated
            connection</summary>

      

The provider config ID. Same as `provider` and exists for backward compatibility.

\> \\[!WARNING]
\>
\> Deprecated: Use `provider` instead.

Type Definition

\`typescript declare const id: string; `

\</details>



\<details>

\<summary>`connection.provider`
          
            
            connection</summary>

      

The provider config ID (for example, `"google"` or `"github"`).

Type Definition

\`typescript declare const provider: string; `

\</details>



\<details>

\<summary>`connection.providerAccountId`
          
            
            connection</summary>

      

The account ID from the OAuth provider, such as the Google user ID.

Type Definition

\`typescript declare const providerAccountId: string; `

\</details>

***# `OAuthConnection`Extends `Connection` with methods to retrieve OAuth access tokens. Get it with:- [`user.getConnectedAccount({ provider, providerAccountId })`](https://docs.hexclave.com/sdk/types/user#currentusergetconnectedaccount)
- [`user.useConnectedAccount({ provider, providerAccountId })`](https://docs.hexclave.com/sdk/types/user#currentuseruseconnectedaccount) (React hook)
- [`user.listConnectedAccounts()`](https://docs.hexclave.com/sdk/types/user#currentuserlistconnectedaccounts)
- [`user.useConnectedAccounts()`](https://docs.hexclave.com/sdk/types/user#currentuseruseconnectedaccounts) (React hook)
- [`user.getOrLinkConnectedAccount(provider)`](https://docs.hexclave.com/sdk/types/user#currentusergetorlinkconnectedaccount)
- [`user.useOrLinkConnectedAccount(provider)`](https://docs.hexclave.com/sdk/types/user#currentuseruseorlinkconnectedaccount) (React hook)## Table of ContentsOAuthConnection Table of Contents<pre />## Methods

\<details>

\<summary>`oauthConnection.getAccessToken([options])`
          
            
            oauthConnection</summary>

      

Gets an OAuth access token for this connected account. The token can be used to call the provider's APIs on the user's behalf.

Returns a `Result` object:

\* On success: `{ status: "ok", data: { accessToken: string } }`
\* On error: `{ status: "error", error: OAuthAccessTokenNotAvailable }` if the refresh token has been revoked or expired, or if the requested scopes are not available.

Parameters

\**options.scopes** `string[]`

If provided, only returns a token that has all of these scopes. If the current token does not have the required scopes, the result will be an error.

Returns

\`Promise<Result<{ accessToken: string }, OAuthAccessTokenNotAvailable>>`

Signature

\```typescript theme={null}
declare function getAccessToken(options?: {
  scopes?: string[];
}): Promise<Result<{ accessToken: string }, OAuthAccessTokenNotAvailable>>;
\```

Examples

\```typescript theme={null}
const result = await account.getAccessToken();
if (result.status === "ok") {
  const { accessToken } = result.data;
}
\```

\```typescript theme={null}
const result = await account.getAccessToken({
  scopes: ["https://www.googleapis.com/auth/drive.readonly"],
});
\```

\</details>



\<details>

\<summary>`oauthConnection.useAccessToken([options])`
          
            
            oauthConnection</summary>

      

React hook version of `getAccessToken`. Returns the access token result reactively.

Parameters

\**options.scopes** `string[]`

If provided, only returns a token that has all of these scopes.

Returns

\`Result<{ accessToken: string }, OAuthAccessTokenNotAvailable>`

Signature

\```typescript theme={null}
declare function useAccessToken(options?: {
  scopes?: string[];
}): Result<{ accessToken: string }, OAuthAccessTokenNotAvailable>;
\```

Examples

\```tsx theme={null}
function MyComponent() {
  const user = useUser({ or: "redirect" });
  const accounts = user.useConnectedAccounts();
  const googleAccount = accounts.find(
    (account) => account.provider === "google",
  );
  const result = googleAccount?.useAccessToken();

  if (result?.status === "ok") {
    return <div>Token: {result.data.accessToken}</div>;
  }

  return <div>No Google token available</div>;
}
\```

\</details>

> [!NOTE]
>
> For practical usage instructions, see the [Connected Accounts guide](https://docs.hexclave.com/guides/apps/authentication/connected-accounts.md).
