5 authentication google-oauth reactjs next.js next-auth
将 NextAuth 与 google 提供商一起使用,我如何才能完全退出会话并确保再次登录时,我会进入帐户选择页面而不是立即登录?
这是我的简单 NextJs 登录/注销组件:
import type { NextPage, NextPageContext } from "next";
import { getSession, signIn, signOut, useSession } from "next-auth/react";
const Home: NextPage = () => {
const { data, status } = useSession();
return (
<>
{data?.user ? (
<button onClick={() => signOut()}>Sign out</button>
) : (
<button onClick={() => signIn("google")}>Sign In</button>
)}
{data?.user?.name}
</>
);
};
export async function getServerSideProps(context: NextPageContext) {
const session = await getSession(context);
return {
props: { session }
};
}
export default Home;
Run Code Online (Sandbox Code Playgroud)
当前行为:初次登录后,应用程序会路由到谷歌帐户选择页面,我输入凭据并登录。然后我退出。再次登录后,应用程序会自动使用之前选择的帐户登录。
预期行为:每次登录尝试时显示谷歌帐户选择页面。
小智 12
因此,下一个身份验证文档中提到了解决方案,原因如下: https: //next-auth.js.org/providers/google
要每次都显示帐户选择屏幕,请将authorization块添加到您的选项中,如下所示:
providers: [
GoogleProvider({
clientId: process.env.GOOGLE_CLIENT_ID as string,
clientSecret: process.env.GOOGLE_CLIENT_SECRET as string,
authorization: {
params: {
prompt: "consent",
access_type: "offline",
response_type: "code"
}
}
}),
],
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4330 次 |
| 最近记录: |