Uso NextAuth para iniciar sesión con el proveedor de discordia y necesito agregar el ID de usuario al objeto de la sesión. Para eso, uso la devolución de llamada de la sesión, pero el objeto del usuario no está definido. Cuando intento agregar ID de usuario al objeto de sesión, aparece un error como este:
[next-auth][error][JWT_SESSION_ERROR] https://next-auth.js.org/errors#jwt_session_error No se pueden leer las propiedades de undefined (leyendo 'id')
De hecho, parece que el objeto de usuario no está definido, pero no tengo ninguna solución.
export default NextAuth({ providers: [ DiscordProvider({ clientId: process.env.DISCORD_CLIENT_ID, clientSecret: process.env.DISCORD_CLIENT_SECRET, authorization: { params: { scope: 'identify' } } }) ], session: { jwt: true }, jwt: { secret: process.env.JWT_SECRET }, callbacks: { async session({session, user}) { session.user.id = user.id return session }, async jwt(token) { return token } } })
Puedes hacer eso en tu devolución de llamada :-
callbacks: { jwt:({token,user})=>{ if(user){ token.id = user.userId; } return token; }, session:({session,token}) =>{ if(token){ session.user.id = token.id; } return session; } }
y no olvide devolver al usuario en la función que se ejecuta justo antes de la devolución de llamada, de lo contrario, indicará indefinido.