diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/lib/oauth.ts | 4 | ||||
| -rw-r--r-- | src/routes/api/myanimelist/oauth/callback/+server.ts | 18 |
2 files changed, 22 insertions, 0 deletions
diff --git a/src/lib/oauth.ts b/src/lib/oauth.ts index 53764fad..1c35223d 100644 --- a/src/lib/oauth.ts +++ b/src/lib/oauth.ts @@ -14,6 +14,7 @@ export interface CallbackOptions { authorise: string; redirect?: string; client: ClientOptions; + verifier?: string; } export const callback = async (options: CallbackOptions) => { @@ -25,6 +26,9 @@ export const callback = async (options: CallbackOptions) => { formData.append('client_secret', client.secret); formData.append('redirect_uri', client.redirectURI); formData.append('code', url.searchParams.get('code') || 'null'); + + if (options.verifier) formData.append('code_verifier', options.verifier); + cookies.set( cookie, JSON.stringify( diff --git a/src/routes/api/myanimelist/oauth/callback/+server.ts b/src/routes/api/myanimelist/oauth/callback/+server.ts new file mode 100644 index 00000000..a1d3d6bb --- /dev/null +++ b/src/routes/api/myanimelist/oauth/callback/+server.ts @@ -0,0 +1,18 @@ +import { callback } from '$lib/oauth.js'; +import { env } from '$env/dynamic/private'; +import { env as env2 } from '$env/dynamic/public'; + +export const GET = async ({ url, cookies }) => + callback({ + url, + cookies, + cookie: 'myanimelist', + authorise: 'https://myanimelist.net/v1/oauth2/token', + redirect: '/settings', + verifier: env.CODE_VERIFIER, + client: { + id: env2.PUBLIC_MYANIMELIST_CLIENT_ID, + secret: env.MYANIMELIST_CLIENT_SECRET, + redirectURI: env2.PUBLIC_MYANIMLIST_REDIRECT_URI + } + }); |