reactjs - Next.js & Facebook OAuth - Σφάλμα τύπου στο callback JWT του NextAuth (typescript)


Χρησιμοποιώ το Facebook για αυθεντικοποίηση και προσπαθώ να πάρω το access token ώστε να μπορώ να κάνω κλήσεις στο API. Αυτό γίνεται σε Next.js με TypeScript, χρησιμοποιώντας το NextAuth.

pages/api/auth/[...nextAuth].ts:

...
export const authOptions = {
  callbacks: {
    async jwt({ token, user, account, profile }) {
      if (account) {
        token.accessToken = account.access_token
        token.id = profile.id
      }
      return token;
    },
    async session({ session, token, user }) {
      session.user.id = token.id;
      session.accessToken = token.accessToken;
      return session;
    }
  },
...

Αυτό είναι βασικά ταυτόσημο με τα έγγραφα.

Δεδομένου ότι χρησιμοποιώ TypeScript, τα έγγραφα λένε επίσης να χρησιμοποιώ επέκταση module.

next-auth.d.ts
...
declare module "next-auth/jwt" {
  interface JWT {
    id: string;
    accessToken: string;
  }
}

declare module "next-auth" {
  interface Session {
    user: {
      id: string;
    }
  }
}

Λαμβάνω αυτό το σφάλμα τύπου. Πρέπει απλώς να θέσω όλες τις παραμέτρους σε any, ή υπάρχει καλύτερος τρόπος;

Απάντηση #1

Το πρόβλημα που αντιμετωπίζετε οφείλεται στο ότι δεν έχετε καθορίσει τύπο για τη μεταβλητή authOptions. Η προσθήκη του τύπου NextAuthOptions θα πρέπει να διορθώσει το μήνυμα σφάλματος.

export const authOptions: NextAuthOptions = {

Οι παράμετροι που προσθέτετε στο αρχείο next-auth.d.ts είναι για την επέκταση των τύπων NextAuth, ώστε να μπορείτε να προσθέσετε προσαρμοσμένες παραμέτρους. Η προσθήκη τύπου any εκεί δεν θα έκανε τίποτα.