我是Auth0
的新手,正在尝试在next.js
中设置一个登录小部件,它为登录用户提供access_token
和id_token
。我有点卡住了,再也看不到登录小部件了。
到目前为止我所实施的
单位:_app.tsx
import { UserProvider, useUser } from '@auth0/nextjs-auth0/client';
import type { AppProps } from 'next/app';
import { Auth0Provider } from "@auth0/auth0-react";
function MyApp({ Component, pageProps }: AppProps) {
return (
<UserProvider>
<Auth0Provider
domain='mydomain.eu.auth0.com'
clientId='my-client-secret'
>
<Component {...pageProps} />
</Auth0Provider>
</UserProvider>
);
}
export default MyApp;
单位:index.tsx
import { useUser } from '@auth0/nextjs-auth0/client';
import { useRouter } from 'next/router';
export default function Home() {
const { user, error, isLoading } = useUser();
const router = useRouter();
if (isLoading) return <div>Loading...</div>;
if (error) return <div>{error.message}</div>;
const handleLogout = async () => {
try {
await fetch('/api/auth/logout');
router.push('/');
} catch (err) {
console.error('Failed to log out', err);
}
};
if (user) {
console.log('idToken:', user.idToken);
console.log('accessToken:', user.accessToken);
return (
<div>
<p>Welcome, {user.name}</p>
<button onClick={handleLogout}>Logout</button>
</div>
);
} else {
return <a href="/api/auth/login">Login</a>;
}
}
每当我在浏览器上打开应用程序时,我都会得到404
的GET http://localhost:3000/api/auth/me 404(Not Found)
我做错了什么?我在next.js
中找不到Auth0
的官方文档,通过该文档我可以获得access_token
和id_token
。但是,他们确实有reactjs
的东西,但不幸的是,我使用的是next.js
1条答案
按热度按时间ki1q1bka1#
首先,对于Auth 0配置,在“设置”页面的“应用程序URI”部分为应用程序配置以下URL:
使用以下值创建.env文件:
如果你使用Next.js < 13和/pages文件夹:
动态API路由文件的路径是/pages/api/auth/[auth 0]. js。添加到该文件:
在nextjs-auth 0的文档中:执行handleAuth()会在底层创建以下路由处理程序,它们执行身份验证流程的不同部分:
使用UserProvider组件 Package pages/_app.js组件:
消费身份验证:
如果你使用的是Next.js >= 13与App Router:
动态API路由文件的路径为/app/api/auth/[auth 0]/route. js。
添加到该文件:
使用UserProvider组件 Package app/layout.js组件:
消费身份验证: