> For the complete documentation index, see [llms.txt](https://docs.cotter.app/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.cotter.app/sdk-reference/flutter/getting-oauth-tokens.md).

# Getting OAuth Tokens

When a user successfully logged-in, Cotter will generate an `access_token` , an `id_token` , and a `refresh_token` [that you can use in your backend API](https://blog.cotter.app/passwordless-login-with-email-and-json-web-token-jwt-authentication-with-nextjs/).&#x20;

The SDK automatically stores these tokens in the device's secure storage.

#### Getting The Tokens

```dart
Cotter cotter = new Cotter(apiKeyID: API_KEY_ID);
try {
  var accessToken = await cotter.getAccessToken();
  var idToken = await cotter.getIDToken();
  var refreshToken = await cotter.getRefreshToken();
} catch (e) {
  print(e);
}
```

This function will automatically refresh the `access_token` and `id_token` if it's expired.

## OAuth Token Specification

{% content-ref url="/pages/-M4HUyse-9aPxMqUoSRy" %}
[Cotter's OAuth 2.0 Tokens Specification](/getting-access-token/handling-authentication-with-cotter.md)
{% endcontent-ref %}
