如何在next-auth中获取提供程序访问令牌

1wnzp6jl  于 2022-12-18  发布在  其他
关注(0)|答案(5)|浏览(128)

嗨,我是nextjs的新手,我使用next-auth进行身份验证。用户可以使用Google登录,当他们登录并通过身份验证时,我希望获得提供商(在本例中为Google)提供的access_token。虽然我可以获得内部signIn回调函数,但是否有办法全局访问该函数?

ippsafx7

ippsafx71#

你也可以在nextAuth配置中创建回调键来访问你的userId和access_token。

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

ccgok5k52#

请参考这个post,我认为这会有所帮助。
请注意next-auth版本,在V4中,您可以通过以下方式访问访问令牌:account.access_token,V4之前为account. access令牌。
此外,此link将有助于next 0auth V4中的回调。

f4t66c6m

f4t66c6m3#

用于凭据登录
使用如下回调

callbacks: {
    jwt: async ({ token, user }) => {
        user && (token.user = user)
        return token
    },
    session: async ({ session, token }) => {
        session.user = token.user
        return session
    }
}

然后在页面导入中

import { getSession ,useSession, signIn, signOut } from "next-auth/react";

并将其用于获取令牌

const { data: token, status } = useSession()
console.log(token)


要获取会话,请使用此

const { data: session, status } = useSession()
console.log(session)
cxfofazt

cxfofazt4#

您可以使用getSession方法访问它,该方法可以在服务器端(即getServerSideProps之类的next.js方法)和客户端(即普通的react组件)使用。
参见:https://next-auth.js.org/getting-started/client#getsession

yeotifhr

yeotifhr5#

callbacks: {
  async jwt({ token, user, account, profile, isNewUser }) {
    if (account) {
      console.log(account.id_token)
    }
  },
},

相关问题