# `Medplum.OAuth`
[🔗](https://github.com/CodeDuckers-LLC/medplum_elixir/blob/v0.3.0/lib/medplum/oauth.ex#L1)

OAuth helpers for Medplum authorization-code and OpenID Connect flows.

# `authorize_url`

```elixir
@spec authorize_url(Medplum.Client.t() | keyword() | map(), keyword() | map()) ::
  String.t()
```

Builds a Medplum OAuth authorize URL.

# `exchange_authorization_code`

```elixir
@spec exchange_authorization_code(
  Medplum.Client.t() | keyword() | map(),
  String.t(),
  keyword() | map()
) ::
  {:ok, map()} | {:error, Medplum.Error.t()}
```

Exchanges an authorization code for a Medplum token response.

# `userinfo`

```elixir
@spec userinfo(
  Medplum.Client.t(),
  keyword()
) :: {:ok, map()} | {:error, Medplum.Error.t()}
```

Fetches OpenID Connect userinfo from `/oauth2/userinfo`.

---

*Consult [api-reference.md](api-reference.md) for complete listing*
