40 lines
989 B
TypeScript
40 lines
989 B
TypeScript
|
import type { NextAuthOptions } from "next-auth";
|
||
|
import TwitchProvider from "next-auth/providers/twitch";
|
||
|
|
||
|
export interface TwitchProfile extends Record<string, any> {
|
||
|
sub: string
|
||
|
preferred_username: string
|
||
|
email: string
|
||
|
picture: string
|
||
|
}
|
||
|
|
||
|
export const options: NextAuthOptions = {
|
||
|
providers: [
|
||
|
TwitchProvider({
|
||
|
clientId: process.env.TWITCH_CLIENT_ID as string,
|
||
|
clientSecret: process.env.TWITCH_CLIENT_SECRET as string,
|
||
|
authorization: {
|
||
|
params: {
|
||
|
scope: "openid user:read:email",
|
||
|
claims: {
|
||
|
id_token: {
|
||
|
email: null,
|
||
|
picture: null,
|
||
|
preferred_username: null,
|
||
|
},
|
||
|
},
|
||
|
},
|
||
|
},
|
||
|
idToken: true,
|
||
|
profile(profile) {
|
||
|
return {
|
||
|
id: profile.sub,
|
||
|
name: profile.preferred_username,
|
||
|
email: profile.email,
|
||
|
image: profile.picture,
|
||
|
}
|
||
|
},
|
||
|
})
|
||
|
],
|
||
|
secret: process.env.NEXTAUTH_SECRET
|
||
|
}
|