Spaces:
Running
Running
import type { RequestHandler } from "@sveltejs/kit"; | |
export const GET: RequestHandler = async ({ url }) => { | |
const code = url.searchParams.get("code"); | |
if (!code) { | |
return new Response(JSON.stringify({ error: "Code not provided" }), { status: 400 }); | |
} | |
const clientId = import.meta.env.VITE_CLIENT_ID; | |
const clientSecret = import.meta.env.VITE_CLIENT_SECRET; | |
const redirectUri = import.meta.env.VITE_REDIRECT_URI; | |
const tokenUrl = "https://huggingface.co/oauth/token"; | |
const body = new URLSearchParams({ | |
client_id: clientId, | |
client_secret: clientSecret, | |
redirect_uri: redirectUri, | |
code: code, | |
grant_type: "authorization_code", | |
}); | |
try { | |
const response = await fetch(tokenUrl, { | |
method: "POST", | |
headers: { | |
"Content-Type": "application/x-www-form-urlencoded", | |
}, | |
body, | |
}); | |
if (!response.ok) { | |
return new Response(JSON.stringify({ error: "Token exchange failed" }), { status: response.status }); | |
} | |
const data = await response.json(); | |
const accessToken = data.access_token; | |
return new Response(JSON.stringify({ access_token: accessToken }), { | |
status: 200, | |
headers: { "Content-Type": "application/json" }, | |
}); | |
} catch (error) { | |
return new Response(JSON.stringify({ error: "Token exchange failed" }), { status: 500 }); | |
} | |
}; | |