我想通过 Github REST API 实现用户登录并访问一些用户数据(例如存储库、问题)。
然后我成功实现了登录功能,但 Github REST API 需要令牌才能访问其端点。我使用
getServerSession(authOptions)
检查了会话并获得了一些信息,但没有获得令牌(如下所示)。
"session": {
"user": {
"name": "UserName",
"email": "[email protected]",
"image": "https://xxxxxx.xxxxxx/xxxxx"
}
}
我在 StackOverflow 上尝试了一些解决方案,但没有一个对我有用。
有人可以帮助我吗?谢谢。
在某人的帮助下,我在 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"];
}
}