Quantcast
Channel: Recent Questions - Stack Overflow
Viewing all articles
Browse latest Browse all 16420

Next JS - Supabase Error: AuthApiError: Invalid Refresh Token: Already Used

$
0
0

I'm trying to implement Supabase Auth in a Next JS project

Now I'm encounter the following error which keeps repeating when I npm run dev:

[AuthApiError: Invalid Refresh Token: Already Used]{ __isAuthError: true,name: 'AuthApiError',status: 400}

this is my middleware.ts

import type { NextRequest } from "next/server";import { NextResponse } from "next/server";import { createMiddlewareClient } from "@supabase/auth-helpers-nextjs";import { Database } from "./types";const locales = ["en", "ar"];const defaultLocale = "en";const PUBLIC_FILE = /\.(.*)$/;export async function middleware(req: NextRequest) {  const res = NextResponse.next();  const supabase = createMiddlewareClient<Database>({ req, res });  const user = await supabase.auth.getSession();  if (    req.nextUrl.pathname.startsWith("/_next") ||    req.nextUrl.pathname.includes("/api/") ||    PUBLIC_FILE.test(req.nextUrl.pathname)  ) {    return;  }  const pathname = req.nextUrl.pathname;  // Manage route protection  const isAuthenticated = user?.data?.session?.user.role === "authenticated";  const isLoginPage =    pathname.startsWith("/login") || pathname.startsWith("/ar/login");  const sensitiveRoutes = ["/", "/ar"];  const isAccessingSensitiveRoute = sensitiveRoutes.some((route) =>    pathname.startsWith(route),  );  if (isLoginPage) {    if (isAuthenticated) {      return NextResponse.redirect(        new URL(`${pathname.startsWith("/ar") ? "/ar" : "/en"}/`, req.url),      );    }    if (      pathname.startsWith(`/${defaultLocale}/`) ||      pathname === `/${defaultLocale}`    ) {      return NextResponse.redirect(        new URL(          pathname.replace(            `/${defaultLocale}`,            pathname === `/${defaultLocale}` ? "/" : "",          ),          req.url,        ),      );    }  }  if (!isAuthenticated && isAccessingSensitiveRoute && !isLoginPage) {    return NextResponse.redirect(      new URL(`${pathname.startsWith("/ar") ? "/ar" : ""}/login`, req.url),    );  }  // Check if the default locale is in the pathname  if (    pathname.startsWith(`/${defaultLocale}/`) ||    pathname === `/${defaultLocale}`  ) {    // e.g. incoming request is /en/products    // The new URL is now /products    return NextResponse.redirect(      new URL(        pathname.replace(          `/${defaultLocale}`,          pathname === `/${defaultLocale}` ? "/" : "",        ),        req.url,      ),    );  }  const pathnameIsMissingLocale = locales.every(    (locale) =>      !pathname.startsWith(`/${locale}/`) && pathname !== `/${locale}`,  );  if (pathnameIsMissingLocale) {    // We are on the default locale    // Rewrite so Next.js understands    // e.g. incoming request is /products    // Tell Next.js it should pretend it's /en/products    return NextResponse.rewrite(      new URL(`/${defaultLocale}${pathname}`, req.url),    );  }}export const config = {  matchter: ["/","/login","/((?!api|_next/static|_next/image|assets|favicon.ico).*)",  ],};

sometimes it's solved automatically (keeps repeating several times then stop) redirecting me to login page, and sometimes it keeps looping in this error without stopping.


Viewing all articles
Browse latest Browse all 16420

Latest Images

Trending Articles



Latest Images

<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>