Use this file to discover all available pages before exploring further.
The Auth0 React SDK (auth0-react.js) is a JavaScript library for implementing authentication and authorization in React apps with Auth0. It provides a custom React hook and other Higher Order Components so you can secure React apps using best practices while writing less code.The Auth0 React SDK handles grant and protocol details, token expiration and renewal, as well as token storage and caching. Under the hood, it implements Universal Login and the Authorization Code Grant Flow with PKCE.The library is hosted on GitHub where you can read more about the API.
First, you’ll need to wrap your application in a single Auth0Provider component. This will provide the React Context to components that are placed inside your application.
Protect a route component using the withAuthenticationRequired higher order component. Visits to this route when unauthenticated will redirect the user to the login page and back to this page after login.
import React from 'react';import { withAuthenticationRequired } from '@auth0/auth0-react';const PrivateRoute = () => (<div>Private</div>);export default withAuthenticationRequired(PrivateRoute, { // Show a message while the user waits to be redirected to the login page. onRedirecting: () => (<div>Redirecting you to the login page...</div>)});
Note If you are using a custom router, you will need to supply the Auth0Provider with a custom onRedirectCallback method to perform the action that returns the user to the protected page. See examples for react-router, Gatsby and Next.js.
To call a protected API with an , be sure to specify the audience and scope of your access token, either in Auth0Provider or getAccessTokenSilently. Then use it to call a protected API by passing it in the Authorization header of your request.
import React, { useEffect, useState } from 'react';import { useAuth0 } from '@auth0/auth0-react';const Posts = () => { const { getAccessTokenSilently } = useAuth0(); const [posts, setPosts] = useState(null); useEffect(() => { (async () => { try { const token = await getAccessTokenSilently({ authorizationParams: { audience: 'https://api.example.com/', // Value in Identifier field for the API being called. scope: 'read:posts', // Scope that exists for the API being called. You can create these through the Auth0 Management API or through the Auth0 Dashboard in the Permissions view of your API. } }); const response = await fetch('https://api.example.com/posts', { headers: { Authorization: `Bearer ${token}`, }, }); setPosts(await response.json()); } catch (e) { console.error(e); } })(); }, [getAccessTokenSilently]); if (!posts) { return <div>Loading...</div>; } return ( <ul> {posts.map((post, index) => { return <li key={index}>{post}</li>; })} </ul> );};export default Posts;
Was this page helpful?
⌘I
Assistant
Responses are generated using AI and may contain mistakes.