Ce qui se passe
Chaque e-mail de vérification, de lien magique, d’invitation et de réinitialisation contient un lien vers votre app. Votre fournisseur d’authentification ou votre framework construit ce lien à partir d’un paramètre : l’URL du site, une URL de redirection ou l’hôte configuré pour votre service d’envoi. Si ce paramètre indique encore http://localhost:3000, chaque e-mail pointe vers l’ordinateur du développeur.
Parfois le lien lui-même est hébergé, par exemple https://yourproject.supabase.co/auth/v1/verify?..., et seule la page vers laquelle il redirige ensuite est locale. La vérification réussit, puis le navigateur est envoyé vers localhost:3000 et échoue. Ce cas passe facilement inaperçu, car l’e-mail semble correct.
Corriger dans Supabase (y compris les apps Lovable sur votre propre projet Supabase)
- Dans le tableau de bord Supabase, ouvrez Authentication → URL Configuration.
- Définissez Site URL sur votre adresse en ligne, comme
https://your-app.lovable.appou votre propre domaine. Un nouveau projet Supabase commence avechttp://localhost:3000ici. - Ajoutez chaque autre environnement utilisé (préproduction, domaines de prévisualisation, localhost pour le développement) dans Redirect URLs. Les jokers sont pris en charge pour les déploiements de prévisualisation.
- Si votre code transmet
emailRedirectToouredirectTolors de l’inscription ou de la connexion, construisez cette valeur à partir du site courant, par exemplewindow.location.origin, ou d’une variable d’environnement. Une redirection absente de la liste autorisée revient à la Site URL. - Si vous avez personnalisé les modèles d’e-mail, vérifiez qu’ils utilisent les variables d’URL de confirmation ou d’URL du site du modèle plutôt qu’une adresse codée en dur.
Corriger dans Firebase Authentication
- Vérifiez l’URL de redirection que votre code transmet dans ses paramètres de code d’action lors de l’envoi des liens de vérification ou de connexion. Elle doit venir de l’environnement, pas d’un
http://localhostcodé en dur. - Ajoutez votre domaine en ligne dans Authentication → Settings → Authorized domains.
Corriger dans d’autres stacks
- Auth.js / NextAuth : définissez l’URL de déploiement (
AUTH_URL, ouNEXTAUTH_URLsur les anciennes versions) là où votre hébergeur ne la déduit pas. - Ruby on Rails : définissez
config.action_mailer.default_url_optionsavec le bonhostdans la configuration de chaque environnement. - Django : construisez les liens à partir de la requête ou du framework Sites, et vérifiez que le domaine du site n’est plus
example.comoulocalhost. - Laravel : définissez
APP_URLpour chaque environnement. - Autre : cherchez
localhost:3000dans le code et déplacez-le dans une variable d’environnement.
Sur un simulateur ou émulateur de téléphone
Le simulateur iOS partage le réseau de votre ordinateur, donc les liens localhost s’y ouvrent. L’émulateur Android, non : il accède à votre ordinateur via 10.0.2.2, donc un lien vers localhost:3000 n’ouvre rien. Pour un émulateur, faites pointer les liens de l’app vers http://10.0.2.2:3000, ou mieux, vers une adresse de préproduction accessible aux deux. Plus de détails dans Apps mobiles.
Comment Proxy Mail QA le signale
Quand un lien d’un e-mail de test pointe vers une adresse locale, ou y redirige après vérification, Proxy Mail QA le signale sur la ligne Accounts (« Redirige vers localhost:3000 ») et l’explique dans la boîte de réception. Vous voyez d’un coup d’œil que l’environnement est mal configuré, avant que quelqu’un ne signale « la vérification ne marche pas ».
Si vous testez volontairement une version locale, choisissez C’est mon environnement de développement. Les liens vers cet hôte ne sont plus signalés dans ce projet, et les vérifications d’e-mail les acceptent. Vous pouvez annuler cela dans les paramètres du projet. Un agent de codage peut marquer l’hôte lui-même avec l’outil MCP mark_dev_host, et une suite de tests avec POST /v1/project/dev-hosts (markDevHost dans le client Node.js, mark_dev_host dans le helper Python).