在Next Auth Jwt回调函数中获取未定义的帐户

jhdbpxl9  于 2023-03-08  发布在  其他
关注(0)|答案(1)|浏览(99)

我正在使用Next Auth V4(从V3升级而来-即没有从头开始实现V4)。
我试图在登录回调函数中从account对象中的okta提供程序获取用户数据,但是当我试图在jwt和session回调函数中使用它时,它被取消设置/未定义。
以下是后续身份验证配置:

jwt: {
    secret: process.env.NEXT_AUTH_SECRET,
    encode, // function to encode the claims
    decode  // function to validate the token and decode the claims
  },
...
  session: {
    maxAge: process.env.SESSION_TIMEOUT || 900,
    updateAge: process.env.SESSION_UPDATE_TIMEOUT || 60,
    strategy: "jwt",
  },
...
  providers: [
    OktaProvider({
      clientId: process.env.OKTA_CLIENT_ID,
      clientSecret: process.env.OKTA_CLIENT_SECRET,
      domain: process.env.OKTA_DOMAIN,
      issuer: process.env.OKTA_ISSUER
    })
  ],
...
 callbacks: {
   ...
   async jwt({ token, user, account, profile, isNewUser}){
    // here other then token, everything is undefined.
    return token
   }
   ...
   async session({ session, token}) {
     return session
   }
yeotifhr

yeotifhr1#

如果这对你来说仍然是真实的。我的问题是在'next-auth.d. ts'中,我将它重命名为nextaut.d.ts并添加以下代码

import NextAuth, { DefaultSession } from 'next-auth';
import { User, Session } from 'next-auth';
import { DefaultJWT } from 'next-auth/jwt';

declare module 'next-auth' {
  /**
   * Returned by `useSession`, `getSession` and received as a prop on the `SessionProvider` React Context
   */
  interface Session extends DefaultSession {
    gqlToken: string;
    accessToken: string;
    refreshToken: string;
  }
}

declare module 'next-auth/jwt' {
  interface JWT extends DefaultJWT {
    gqlToken: string;
    accessToken: string;
    refreshToken: string;
  }
}

相关问题