Next-auth 获取 Github REST API 的令牌

问题描述 投票:0回答:1

我想通过 Github REST API 实现用户登录并访问一些用户数据(例如存储库、问题)。

然后我成功实现了登录功能,但 Github REST API 需要令牌才能访问其端点。我使用

getServerSession(authOptions)
检查了会话并获得了一些信息,但没有获得令牌(如下所示)。

"session": {
  "user": {
    "name": "UserName",
    "email": "[email protected]",
    "image": "https://xxxxxx.xxxxxx/xxxxx"
  }
}

我在 StackOverflow 上尝试了一些解决方案,但没有一个对我有用。
有人可以帮助我吗?谢谢。

typescript github next.js github-api next-auth
1个回答
0
投票

在某人的帮助下,我在 next.js Discrod 服务器中找到了解决方案。
文档:https://next-auth.js.org/configuration/callbacks#sign-in-callback

export const authOptions : NextAuthOptions = {
  adapter: ...,
  session: {
    strategy: "jwt", // add this
  },
  providers: [...],
  // add two callback functions following
  callbacks: {
    async session({ session, token, user }) {
      session.accessToken = token.accessToken as string;
      return session;
    },
    async jwt({ token, user, account, profile }) {
      if (account) {
        token.accessToken = account.access_token;
      }
      return token;
    }
  },
};

然后对于 typescript,您需要将其写入“types/next-auth.d”中。
文档:https://next-auth.js.org/getting-started/typescript

import NextAuth, { DefaultSession } from "next-auth";

declare module "next-auth" {
  interface Session {
    accessToken: string;
    expires: string;
    user: {
      address: string
    } & DefaultSession["user"];
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.