Fonctionnalités · Connexion et e-mail
Connexion avec Google, sans Google Cloud.
« Continuer avec Google » et connexion par e-mail pour les personnes qui utilisent votre application — aucun projet Google Cloud, aucun client OAuth, aucune clé. Les e-mails de création de compte partent au nom de votre application, depuis votre propre domaine dès que celui-ci est vérifié.
Ce que votre agent appelle
appAuthConfigureappAuthStatusappAuthEmailConnectappAuthEmailStatus
Let staff sign in with Google
Update(app/login/page.tsx)
1 line · Google button → TOFU_SIGN_IN_URL
Write(app/auth/confirm/route.ts)
new route · verifyOtp for the email link
tofu · appAuthConfigure confirmed: true
configured · Google sign-in, and email sign-in as well
Comment fonctionne la connexion Google
Tofu parle à Google, pour que votre application n’ait pas à le faire.
Le relais de Tofu sur oauth.trytofu.ai possède un seul client Google et une seule adresse de rappel permanente. Votre application y envoie le navigateur ; le relais authentifie la personne auprès du service d’authentification de votre application — le projet Supabase derrière sa base de données gérée.
- Votre application« Continuer avec Google » envoie le navigateur au relais de Tofu.
- oauth.trytofu.aiVérifie que l’adresse de retour est bien l’une des adresses de votre application, et rien de plus.
- GoogleLa personne se connecte sur l’écran de consentement du client de Tofu.
- Le service d’authentification de votre applicationLe compte y est créé ou retrouvé, et le navigateur revient connecté.
Comme le relais est le seul à parler à Google, il n’y a ni projet Google Cloud, ni client OAuth, ni clé de votre côté — et aucune étape dans la console, application par application, pour qui que ce soit.
appAuthConfigure écrit la connexion Google et la connexion par e-mail dans le service d’authentification de votre application en une seule étape confirmée, puis relit la configuration avant d’annoncer configuré.
Déployer avec une base de données ne suffit pas à activer la connexion : il faut un appel explicite après le déploiement, que vous pouvez répéter sans risque.
// Continue with Google — Tofu brokers the sign-in.
window.location.href = process.env.NEXT_PUBLIC_TOFU_SIGN_IN_URL + "?return=" +
encodeURIComponent(window.location.href);&flow=pkce et valide la connexion dans une petite route qui lui est propre. Votre agent écrit les deux.L’e-mail de création de compte, au nom de votre application.
La connexion par e-mail est activée à la même étape, pour qu’un compte garde toujours un moyen de se reconnecter si une connexion tierce devient indisponible.
Le service d’authentification de votre application envoie ses e-mails (confirmation, magic-link, password-reset, invitation, address-change et reauthentication) via la configuration e-mail de Tofu, avec le nom de votre application comme expéditeur. Aucun mot de passe SMTP, aucun fournisseur d’e-mail auprès duquel s’inscrire.
Chaque message contient un code à usage unique en plus d’un lien : sinon, les analyseurs de messagerie qui ouvrent les liens en premier consommeraient le jeton avant votre utilisateur.
| Quand | Envoyé depuis |
|---|---|
| Tant que votre domaine n’est pas vérifié | noreply@notify.trytofu.app |
| Une fois vérifié | noreply@send.frankskitchen.com |
Depuis votre domaine
Six enregistrements DNS, aucun à la racine de votre domaine.
Une fois votre domaine connecté, appAuthEmailConnect crée une identité d’envoi pour send.frankskitchen.com et publie ses enregistrements — tous sous send., pour ne pas toucher aux e-mails que votre domaine reçoit déjà. Supprimez-les, et le domaine est exactement comme avant.
| Type | Nom, dans frankskitchen.com | Valeur |
|---|---|---|
| CNAME | ‹token 1›._domainkey.send | ‹token 1›.dkim.amazonses.com |
| CNAME | ‹token 2›._domainkey.send | ‹token 2›.dkim.amazonses.com |
| CNAME | ‹token 3›._domainkey.send | ‹token 3›.dkim.amazonses.com |
| MX 10 | bounce.send | feedback-smtp.‹region›.amazonses.com |
| TXT | bounce.send | v=spf1 include:amazonses.com ~all |
| TXT | _dmarc.send | v=DMARC1; p=none; rua=mailto:… |
Avec l’autorisation Cloudflare dont votre connexion de domaine dispose déjà, Tofu les écrit lui-même — sans seconde autorisation. Ailleurs, il vous les liste à ajouter et demande au fournisseur d’e-mail de les vérifier.
Tant que le fournisseur d’e-mail ne signale pas le domaine comme vérifié, les e-mails continuent de partir de notify.trytofu.app — la création de compte ne s’arrête jamais pendant l’attente.
Un lien qu’un analyseur ne peut pas consommer.
Chaque message pointe vers /auth/confirm sur l’adresse de votre application, et le jeton n’est consommé que lorsque votre application appelle verifyOtp — un analyseur qui ouvre le lien en premier atteint donc votre application, pas le service de connexion.
Une nouvelle application créée avec la skill /tofu reçoit cette route ; votre agent l’écrit. Une application déployée sans cette route permet quand même aux personnes de se connecter avec le code présent dans chaque message.
import { createClient } from '@/lib/supabase/server';
import { NextResponse } from 'next/server';
export async function GET(request) {
const { searchParams, origin } = new URL(request.url);
const token_hash = searchParams.get('token_hash');
const type = searchParams.get('type');
if (token_hash && type) {
const supabase = await createClient();
const { error } =
await supabase.auth.verifyOtp({ type, token_hash });
if (!error) return NextResponse.redirect(`${origin}/`);
}
return NextResponse.redirect(`${origin}/login?error=link`);
}Bientôt disponible.
L’écran de consentement affiche le nom de Tofu. Google affiche le nom vérifié du client par lequel la connexion passe : les personnes lisent donc « continuer vers Tofu ». Votre propre nom à cet endroit exige votre propre client Google, qui n’est pas développé.
Uniquement avec une base de données gérée par Tofu. La connexion est configurée dans le service d’authentification derrière la base de données gérée de votre application. Une application sur Clerk, Auth0 ou son propre projet Supabase reste exactement telle quelle.
Google et e-mail, rien d’autre. Pas de connexion GitHub ou Apple pour les utilisateurs de votre application.
Les e-mails de connexion, pas les autres e-mails de votre application. Tofu envoie les messages de connexion et de création de compte ; les reçus, les notifications et tout ce que votre application envoie par ailleurs ne passent pas par Tofu.
Un expéditeur à votre nom exige votre propre domaine. Le domaine doit d’abord être connecté à l’application ; tant qu’il n’est pas vérifié, les e-mails partent de noreply@notify.trytofu.app.
L’expéditeur sur votre domaine est la partie la plus récente. Ses enregistrements, sa vérification et le changement d’expéditeur ont fonctionné de bout en bout sur le projet de test de Tofu, pas encore sur l’application d’un client.
Collez un prompt. En ligne en 10 minutes.
Votre application, sa base de données, votre domaine et votre connexion — avec l’agent que vous utilisez déjà, en 10 minutes environ.
Décrivez une application, ou apportez celle que votre agent a créée. Tofu la met en ligne.
Fonctionne avec tout agent de codage
Ressources
Comparer
© 2026 Tofu
trytofu.ai
Traduit de l’anglais. En cas de divergence entre les deux versions, l’original anglais fait foi.