Estoy tratando de obtener algunos datos de mi servidor dependiendo de quién haya iniciado sesión actualmente. Estoy usando Next-Auth y normalmente solo puedo llamar:
const { data: session } = useSession(); En la parte superior del componente funcional, pero no puede hacer esto en getServerSideProps() .
Necesito hacer una solicitud de obtención como esta:
export async function getServerSideProps() { const res = await fetch( `http://localhost:5000/api/users/${session.id}/following` ); const isFollowing = res.json(); return { props: { props: isFollowing }, }; }que tiene el ID de sesión de los usuarios actuales colocado dinámicamente.
¿Cómo accedo a mi ID de sesión dentro getServerSideProps ?
Dado que useSession es un gancho de reacción, solo se puede usar dentro de Component. Para el uso del lado del servidor, existe otro método del paquete Next-Auth: getSession. https://next-auth.js.org/v3/getting-started/client#getsession
Ejemplo del lado del servidor
import { getSession } from "next-auth/client" export default async (req, res) => { const session = await getSession({ req }) /* ... */ res.end() }Nota: Al llamar al lado del servidor getSession(), debe pasar {req} o el objeto de contexto.
debe volver a asignar los encabezados de la solicitud getServerSideProps a la búsqueda interna, porque esa búsqueda no tiene encabezados, cookies ni tokens
export async function getServerSideProps(ctx) { const headers=ctx.req.headers //where cookies, jwt or anything const res = await fetch( `http://localhost:5000/api/users/${session.id}/following`, {headers} ); const isFollowing = res.json(); return { props: { props: isFollowing }, }; }