Confirmation email error
I’m very struggle to solve this error. I do email sign up ( email and password) then, give me email confirmation. I got the link and access, always return me back
auth/confirm?error=access_denied&error_code=otp_expired&error_description=Email+link+is+invalid+or+has+expired
But, in the confirmation link, they have access token and proper redirect link. Once I pushed, it changes.
I think code is alright. Do I have to set up in supabase?
What I did
1: set up redirect url
2: confirmation email toggle on
Do I need to get SMTP by myself? Otherwise, doesn’t it work?
If you have some trouble, please let me know. If you know how to solve this. Please help me.
I’m marking with Typescript

6 Replies
Must be happening because of this https://supabase.com/docs/guides/auth/auth-email-templates#email-prefetching
It would be nice if you don't take a photo of your screen, but rather make a screenshot with (if you are on Windows) DRUCK or STRG + ALT + S
Oh, I'm sorry. I am going to retry it.
Thank you. I was trying this way after the time. Still, struggle to sort out...
I still have trouble. I tried redirect to middle page. It has not fix yet.
I used supabase Auth email link and should be redirect to "auth/callback?code=". But actually link redirects to /login
What I have tried
Frontend:Next.js(App Router)+ @supabase/supabase-js@2.x
mail template: attatched picture
sign up code: in the picture aswell
Redirect URL: http://localhost:3000/auth/callback, http://localhost:3000/auth/verified including.
/auth/callback/page.tsx (App Router): picture
E-mail click, go to /login, not code... url.
What I have confirmed: In the cookie, token is not stored and any callback url is not in the network
Do you know anything about this to sort out? Or, is it bug of supabase? If I can do any changes, I would love to try. Thank you.
This is the picture of code and e-mail setting.



You can refer to this example. This is exactly what you're looking for
https://github.com/silentworks/supabase-by-example/tree/main/nextjs
Thank you, finally it worked!