下一个授权。如何获取谷歌id_token

use*_*841 2 authorization token reactjs next.js next-auth

简而言之:如何从 nextauth 获取 google id 令牌?

详细信息:我通过 Google 进行授权,之后我必须在服务器上验证 Google 的响应,之后服务器会将其访问令牌返回给我。一个构建后端的朋友告诉我他需要一个id_token,他会用 来检查google-auth。无论我如何尝试设置回调,我都无法获取id_token. 我只在 cookie 中获取会话令牌,没有其他任何信息。

如果可以在没有 的情况下执行此操作id_token,请也写下。

nin*_*sau 6

以下是如何实现这一目标的一个片段。您必须使用回调获取从 google 返回的帐户详细信息:

 callbacks: {
    async jwt({ token, user, account }) {
      // Persist the OAuth access_token to the token right after signin
    
      if (account) {
        token.id_token = account.id_token;
      }
      return token;
    },
    async session({ session, token }) {
      // Send properties to the client, like an access_token from a provider.
      session.id_token = token.id_token;
      return session;
    },
  },
Run Code Online (Sandbox Code Playgroud)

现在,您可以通过执行以下操作来检索令牌:

  const { data: session } = useSession();
  console.log(session.id_token)
Run Code Online (Sandbox Code Playgroud)

所以基本上,我们刚刚所做的就是访问id_token谷歌提供的内容。我们从中访问了它account,现在我们正在传递给该session对象,以便我们可以在应用程序的客户端中使用。

PS>terminal在使用谷歌进行身份验证期间检查您的身份。您将在终端内看到配置文件对象和帐户对象的日志。