我使用的是next-auth版本4.19.2。
我有一个简单的组件,它只显示用户的登录身份:
import { useSession, signIn, signOut } from "next-auth/react"
export default function LoginPlaceholder() {
const { data: session } = useSession();
if(session) {
return <>
Signed in as
userID: {session.user.id} <br/>
name: {session.user.name} <br/>
email: {session.user.email} <br/>
<button onClick={() => signOut()}>Sign out</button>
</>
}
return <>
Not signed in <br/>
<button onClick={() => signIn()}>Sign in</button>
</>
}
我的[... nextauth.js]只返回一些虚拟数据:
async authorize(credentials) {
console.log("authorize script running...");
const user = { id: 22, name: 'J Smith', email: 'jsmith@example.com' }
return user;
}
出于某种原因,我的输出只显示了姓名和电子邮件,而没有ID。
登录用户ID:
姓名:J史密斯
电子邮件:www.example.comjsmith@example.com
我在一个项目中工作,组织中的多个人可以共享同一个电子邮件地址(不是我的主意),所以电子邮件对我来说不是唯一标识符。我需要ID或用户名作为唯一标识符,但我不确定如何获得它。
我也尝试过传递其他数据,但我唯一能得到显示的是姓名和电子邮件。
const user = { id: 22, userName: 'jSmith' name: 'J Smith', email: 'jsmith@example.com' }
但是同样,除了名称和电子邮件,我的组件没有获得任何其他值。
我的问题是:如何修改代码以显示用户名?
1条答案
按热度按时间8hhllhi21#
您应该使用回调,大致如下: