roblox-provider
Version:
A Roblox OAuth2 provider for NextAuth.
103 lines (71 loc) • 2.31 kB
Markdown
- - -
install:
```
npm i roblox-provider
```
- - -
example usage:
```js
import { RobloxProvider, RobloxProviderCallbacks_Jwt } from "roblox-provider"
export const authOptions = {
providers: [
RobloxProvider({
clientId: process.env.ROBLOX_ID,
clientSecret: process.env.ROBLOX_SECRET,
redirectUri: process.env.ROBLOX_REDIRECT,
scopes: ["openid", "profile"],
include: ["name", "displayName", "avatar"]
})
],
callbacks: RobloxProviderCallbacks_Jwt
}
```
(You can replace `RobloxProviderCallbacks_Jwt` with `RobloxProviderCallbacks_Database` if you are using database based sessions)
- - -
Roblox Provider Settings
`clientId`: string - Your roblox oauth2 client id.
`clientSecret`: string - Your roblox oauth2 client secret.
`scopes`: array - The permissions that your oauth2 app needs.
`include`: array - The data that will be saved to a session.
Defaults to `["name", "displayName", "avatar"]`.
Valid values are `name`, `displayName`, `avatar`, `description`, `created` and `hasVerifiedBadge`. (the users RobloxID is always included so theres no need to define it here).
`redirectUri`: string - The url to redirect to.
`checks`: array - The security checks to perform during OAuth. defaults to `['pkce', 'state']`. It is not advised to change this setting unless you know what you are doing.
- - -
If you want to add more callbacks as well you can do the following:
```js
export const authOptions = {
...
callbacks: {
...RobloxProviderCallbacks_Jwt,
// example of another callback
async redirect() {
return
},
},
...
}
```
- - -
If you want to add more functionality to the callbacks used by `roblox-provider` then you can do the following
```js
import { RobloxProvider, RobloxProviderJwtCallback, RobloxProviderSessionCallback } from "roblox-provider"
export const authOptions = {
...
callbacks: {
async jwt({ token, user }) {
token = await RobloxProviderJwtCallback(token, user)
// add your code here
return token
},
async session({ session, token }) {
session = await RobloxProviderSessionCallback(session, token)
// add your code here
return session
}
},
...
}
```