如何解决NextAuth.js - 向 Session 添加额外的属性
我正在尝试使用“identify”和“guilds”范围对 Discord 用户进行身份验证。似乎可以使用以下代码将 Discord 提供的用户信息添加到令牌中的 token.profile
中(注意我也在那里包含了 guilds 数组):
async jwt(token,user,account,profile,isNewUser) {
if (profile) token.profile = profile;
if (account?.accessToken) token.accessToken = account.accessToken;
const data = await (
await fetch("https://discord.com/api/v8/users/@me/guilds",{
method: "GET",headers: {
Authorization: `Bearer ${account?.accessToken}`,},})
).json();
// @ts-ignore
token.profile.guilds = data;
return token;
},
但是,一旦我添加一个 session
函数将 profile
对象添加到会话中,即使已登录,会话也会一直变为 null
,并且登录屏幕来自 Discord 提示我输入用户名和密码,而不是自动让我进入。
// @ts-ignore
async session(session,token) {
console.log("token",token);
console.log("session",session);
// @ts-ignore
session.profile = token.profile;
return session;
},
作为旁注,我必须在 @ts-ignore
函数中添加这么多 session
的原因是它需要一个 Promise<WithAdditionalParams<Session>>
而我只返回一个 { {1}},不知道如何解决这个问题。
谁能帮我将我从 Discord 收到的信息添加到 Promise<Session>
中,以便我可以在我的应用程序中使用它?
解决方法
也想知道这个。但它在旧版本中运行良好,所以可能只有 npm 包有问题。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。