From 7515d21ac9723b2a4df7dfd94f92acd4dd4e9ec9 Mon Sep 17 00:00:00 2001 From: Fuwn Date: Sat, 6 Jan 2024 17:03:45 -0800 Subject: feat(api): myanimelist oauth --- src/lib/oauth.ts | 4 ++++ src/routes/api/myanimelist/oauth/callback/+server.ts | 18 ++++++++++++++++++ 2 files changed, 22 insertions(+) create mode 100644 src/routes/api/myanimelist/oauth/callback/+server.ts (limited to 'src') 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 + } + }); -- cgit v1.2.3