Someone knows why my hooks.js file not getting recently created cookies
When I do login with discord api in my svelte website, the cookies are created and the hooks only get it minutes after.
Someone can help me please?.....I'm using parts of the medium discord Oauth2 svelte example
import cookie from 'cookie';const DISCORD_API_URL = import.meta.env.VITE_DISCORD_API_URL;const HOST = import.meta.env.VITE_HOST;/** @type {import('@sveltejs/kit').GetSession} */export async function getSession(req) { const cookies = cookie.parse(req.request.headers.get("cookie") || ''); console.log(cookies) // if only refresh token is found, then access token has expired. perform a refresh on it. if (cookies.disco_refresh_token && !cookies.disco_access_token) { console.log("Tem o refresh mas não tem o acess") const discord_request = await fetch(`${HOST}/api/refresh?code=${cookies.disco_refresh_token}`); const discord_response = await discord_request.json(); if (discord_response.disco_access_token) { console.log('setting discord user via refresh token..') const request = await fetch(`${DISCORD_API_URL}/users/@me`, { headers: { 'Authorization': `Bearer ${discord_response.disco_access_token}` } }); const response = await request.json(); if (response.id) { return { user: { // only include properties needed client-side — // exclude anything else attached to the user // like access tokens etc ...response } } } } } if (cookies.disco_access_token) { console.log('setting discord user via access token..') const request = await fetch(`${DISCORD_API_URL}/users/@me`, { headers: { 'Authorization': `Bearer ${cookies.disco_access_token}`} }); // returns a discord user if JWT was valid const response = await request.json(); if (response.id) { return { user: { ...response } } } } // not authenticated, return empty user object return { user: false }}
My Auth callback file:
const DISCORD_CLIENT_ID = import.meta.env.VITE_DISCORD_CLIENT_ID;const DISCORD_CLIENT_SECRET = import.meta.env.VITE_DISCORD_CLIENT_SECRET;const DISCORD_REDIRECT_URI = import.meta.env.VITE_DISCORD_REDIRECT_URI;/** * @type {import('@sveltejs/kit').RequestHandler} */export async function get({ url }) { // fetch returnCode set in the URL parameters. const returnCode = url.searchParams.get("code"); console.log('returnCode =>', returnCode); // initializing data object to be pushed to Discord's token endpoint. // the endpoint returns access & refresh tokens for the user. const dataObject = { client_id: DISCORD_CLIENT_ID, client_secret: DISCORD_CLIENT_SECRET, grant_type: 'authorization_code', redirect_uri: DISCORD_REDIRECT_URI, code: returnCode, scope: 'identify email guilds' }; // performing a Fetch request to Discord's token endpoint const request = await fetch('https://discord.com/api/oauth2/token', { method: 'POST', body: new URLSearchParams(dataObject), headers: { 'Content-Type': 'application/x-www-form-urlencoded' } }); const response = await request.json(); console.log(response) if (response.error) { console.log('redirect to / due error'); return { headers: { Location: '/' }, status: 302 } } // redirect user to front page with cookies set const access_token_expires_in = new Date(Date.now() + response.expires_in); // 10 minutes const refresh_token_expires_in = new Date(Date.now() + 30 * 24 * 60 * 60 * 1000); // 30 days console.log('redirect to /logged with cookies'); return { headers: {'set-cookie': [ `disco_access_token=${response.access_token}; Path=/; HttpOnly; SameSite=Strict; Expires=${access_token_expires_in}}`, `disco_refresh_token=${response.refresh_token}; Path=/; HttpOnly; SameSite=Strict; Expires=${refresh_token_expires_in}`, ], Location: '/' }, status: 302 }}