从“next-auth/next”导入 NextAuth; 从“next-auth/providers/google”导入 GoogleProvider; 导出常量 authOptions = { 提供者:[ 谷歌提供商({ clientId:process.env.GOOGLE_CLIENT_ID, clientSecret:process.env.GOOGLE_CLIENT_SECRET, }), ], }; const 处理程序 = NextAuth(authOptions); 导出 { 处理程序为 GET,处理程序为 POST };; <p>和sessionProvider.js</p>
“使用客户端”; 从“反应”导入反应; 从“next-auth/react”导入{SessionProvider}; const Sessionprovider = ({ 孩子 }) => { 返回{children} ; }; 导出默认Sessionprovider;</pre> <p>我在 Layout.js 中使用这个将子元素包装</p><body className={inter.className}>{children} </正文> </html></pre> <p>这是我的 page.js</p>“使用客户端”; 从“next-auth”导入{ getServerSession }; 从“next-auth/react”导入{signIn、signOut、useSession}; 从“./api/auth/[...nextauth]/route”导入{ authOptions }; 导出默认异步函数 Home() { const { 数据:会话,状态 } = useSession(); 控制台.log(会话); const _signInWithGoogle = async () =>; { 等待登录(“谷歌”); }; 返回 ( <div className=“flex justify-center items-center flex-col gap-3 p-5”>主页
{会议 ? ( <按钮 onClick={() =>;登出()} className =“p-1 bg-blue-400 文本-白色字体-半粗体圆形-md悬停:bg-blue-500” > 登出 </按钮> ) : ( <按钮 onClick={_signInWithGoogle} className =“p-1 bg-blue-400 文本-白色字体-半粗体圆形-md悬停:bg-blue-500” > 登入 </按钮> )}
P粉8284636732023-09-06 00:06:41
您需要从客户端组件中删除async
。
"use client"; export default function Home() { }
https://github.com/vercel/next.js/issues/48822