46 lines
1.3 KiB
JavaScript
46 lines
1.3 KiB
JavaScript
export function onRequest(context) {
|
|
const request = context.request
|
|
return drive(request, context.env);
|
|
}
|
|
|
|
|
|
async function drive(request, env){
|
|
|
|
const url = new URL(request.url);
|
|
const encodedRedirectUri = url.host.includes('dev') ? encodeURIComponent("https://risu.pages.dev/") : encodeURIComponent("https://risuai.xyz/")
|
|
|
|
const headerE = {}
|
|
|
|
const params = url.searchParams
|
|
const code = params.get('code')
|
|
if(!code){
|
|
return new Response("No code provided", {
|
|
status: 400,
|
|
headers: headerE
|
|
})
|
|
}
|
|
const resp = await fetch("https://oauth2.googleapis.com/token", {
|
|
method: 'POST',
|
|
headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
|
|
body: `code=${code}&client_id=${env.CLIENT_ID}&client_secret=${env.CLIENT_SECRET}&redirect_uri=${encodedRedirectUri}&grant_type=authorization_code`
|
|
})
|
|
|
|
|
|
const json = await resp.json()
|
|
|
|
if(json.access_token && json.expires_in){
|
|
return new Response(JSON.stringify({
|
|
access_token: json.access_token,
|
|
expires_in: json.expires_in
|
|
}), {
|
|
status: 200,
|
|
headers: headerE
|
|
})
|
|
}
|
|
else{
|
|
return new Response("Response Failed", {
|
|
status: 400,
|
|
headers: headerE
|
|
})
|
|
}
|
|
} |