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

# OAuth2.Client

> Handle Modrinth OAuth connections

```ts theme={"theme":"github-dark-high-contrast"}
export namespace OAuth2 {
  export class Client
}
```

# Table of Contents

### Methods

* [getTeamMembers()](#getTeamMembers)
* [getRedirectUrl()](#getRedirectUrl)
* [exchangeCode()](#exchangeCode)
* [getUserFromToken()](#getUserFromToken)

## Constructor

<Expandable title="Constructor">
  <ResponseField name="new OAuth2.Client(client_id, client_secret, redirect_url, scopes, config?)">
    <ResponseField name="client_id" type="string" required />

    <ResponseField name="client_secret" type="string" required />

    <ResponseField name="redirect_url" type="string" required />

    <ResponseField name="scopes" type="OAuth2.Scopes[]" required>
      Enum: [OAuth2.Scopes](/reference/enum/oauth2/Scopes)
    </ResponseField>

    <ResponseField name="config" type="OAuth2.Config">
      Type: [OAuth2.Config](/reference/type/oauth2/Config)
    </ResponseField>
  </ResponseField>
</Expandable>

## Methods

<AccordionGroup>
  <Accordion title="getScopes()">
    <div id="getScopes" />

    <ResponseField name="getScopes(id)">
      Get the scopes that this OAuth2 client supports

      <ResponseField name="id" type="string" required />

      *Returns [Response](/reference/type/Response)\<[OAuth2.Scopes](/reference/enum/oauth2/Scopes)\[]>*
    </ResponseField>
  </Accordion>

  <Accordion title="getRedirectUrl()">
    <div id="getRedirectUrl" />

    <ResponseField name="getRedirectUrl()">
      Get a redirect URL to Modrinth's authorize page for this OAuth2 client

      <ResponseField name="id" type="string" required />

      *Returns [OAuth2.RedirectUrlResponse](/reference/type/oauth2/RedirectUrlResponse)*
    </ResponseField>
  </Accordion>

  <Accordion title="exchangeCode()">
    <div id="exchangeCode" />

    <ResponseField name="exchangeCode(code)" pre={["async"]}>
      Exchange a Modrinth access code for an access token

      <ResponseField name="code" type="string" required />

      *Returns [Response](/reference/type/Response)\<[OAuth2.AuthorizationResponse](/reference/type/oauth2/AuthorizationResponse)>*
    </ResponseField>
  </Accordion>

  <Accordion title="getUserFromToken()">
    <div id="getUserFromToken" />

    <ResponseField name="getUserFromToken(token)" pre={["async"]}>
      Get the Modrinth user associated with the specified token

      <ResponseField name="token" type="string" required />

      *Returns [Response](/reference/type/Response)\<[User](/reference/type/User) | [null](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/null)>*
    </ResponseField>
  </Accordion>
</AccordionGroup>
