Funktionen · Anmeldung und E-Mail

Anmeldung mit ohne Google Cloud.

„Mit Google fortfahren“ und E-Mail-Anmeldung für die Menschen, die Ihre App nutzen – kein Google-Cloud-Projekt, kein OAuth-Client, keine Schlüssel. Die Registrierungs-E-Mail wird im Namen Ihrer App verschickt, von Ihrer eigenen Domain, sobald diese verifiziert ist.

Dokumentation lesenAgent einrichten

Was Ihr Agent aufruft

  • appAuthConfigure
  • appAuthStatus
  • appAuthEmailConnect
  • appAuthEmailStatus
claude · ~/franks-kitchenBeispiel

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

So funktioniert die Google-Anmeldung

Tofu spricht mit Google, damit Ihre App das nicht muss.

Tofus Broker unter oauth.trytofu.ai besitzt genau einen Google-Client und eine dauerhafte Callback-Adresse. Ihre App schickt den Browser dorthin; der Broker meldet die Person im eigenen Anmeldedienst Ihrer App an – dem Supabase-Projekt, das hinter der verwalteten Datenbank Ihrer App liegt.

Registrierungs-E-Mail

Registrierungs-E-Mail, im Namen Ihrer App.

Die Anmeldung per E-Mail wird im selben Schritt eingeschaltet. So hat jedes Konto immer einen Weg zurück, auch wenn eine Anmeldung über einen Drittanbieter einmal nicht verfügbar ist.

Der Authentifizierungsdienst Ihrer App verschickt die E-Mails (confirmation, magic-link, password-reset, invitation, address-change und reauthentication) über Tofus E-Mail-Einrichtung, mit dem Namen Ihrer App als Absender. Kein SMTP-Passwort und kein E-Mail-Anbieter, bei dem Sie sich registrieren müssten.

Jede Nachricht enthält neben einem Link auch einen Einmalcode, weil E-Mail-Scanner, die Links vorab öffnen, sonst den Token verbrauchen würden, bevor Ihre Nutzer es können.

Von Ihrer Domain

Sechs DNS-Einträge, keine auf der Domain selbst.

Sobald Ihre Domain verbunden ist, legt appAuthEmailConnect eine Sendeidentität für send.frankskitchen.com an und veröffentlicht die zugehörigen DNS-Einträge – alle unter send., sodass die E-Mails, die Ihre Domain bereits empfängt, unberührt bleiben. Entfernen Sie sie, ist die Domain genau wie zuvor.

TypName, in frankskitchen.comWert
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 10bounce.sendfeedback-smtp.‹region›.amazonses.com
TXTbounce.sendv=spf1 include:amazonses.com ~all
TXT_dmarc.sendv=DMARC1; p=none; rua=mailto:…

Mit der Cloudflare-Freigabe, die für Ihre verbundene Domain bereits vorliegt, schreibt Tofu die Einträge selbst – ohne zweite Freigabe. Überall sonst listet Tofu sie zum Eintragen auf und bittet den E-Mail-Anbieter um eine Prüfung.

Bis der E-Mail-Anbieter die Domain als bestätigt meldet, gehen E-Mails weiter von notify.trytofu.app aus – die Registrierung pausiert während der Wartezeit nie.

Die eine Route, die Ihre App selbst besitzt

Ein Link, den ein Scanner nicht verbrauchen kann.

Jede Nachricht verlinkt auf /auth/confirm unter der eigenen Adresse Ihrer App, und der Token wird erst verbraucht, wenn Ihre App verifyOtp aufruft. Ein Scanner, der den Link zuerst öffnet, erreicht also Ihre App und nicht den Anmeldedienst.

Eine neue App, die mit dem /tofu-Skill gebaut wurde, bekommt diese Route; Ihr Agent schreibt sie. Eine App, die ohne sie bereitgestellt wurde, meldet Personen trotzdem mit dem Code aus jeder Nachricht an.

app/auth/confirm/route.tsnext.js
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`);
}

Demnächst verfügbar.

  • Auf dem Zustimmungsbildschirm steht der Name Tofu. Google zeigt den bestätigten Namen des Clients, über den die Anmeldung läuft – dort steht also „Weiter zu Tofu“. Für Ihren eigenen Namen dort brauchen Sie einen eigenen Google-Client; den gibt es noch nicht.

  • Nur mit einer von Tofu verwalteten Datenbank. Die Anmeldung wird in den Authentifizierungsdienst hinter der verwalteten Datenbank Ihrer App geschrieben. Eine App auf Basis von Clerk, Auth0 oder einem eigenen Supabase-Projekt bleibt genau so, wie sie ist.

  • Google und E-Mail, sonst nichts. Keine GitHub- oder Apple-Anmeldung für die Nutzer Ihrer App.

  • Anmelde-E-Mails, nicht die übrigen E-Mails Ihrer App. Tofu versendet die Anmelde- und Registrierungsnachrichten; Belege, Benachrichtigungen und alles andere, was Ihre App verschickt, laufen nicht über Tofu.

  • Für einen eigenen Absender brauchen Sie eine eigene Domain. Die Domain muss zuerst mit der App verbunden werden; bis sie bestätigt ist, kommen die E-Mails von noreply@notify.trytofu.app.

  • Der Absender über die eigene Domain ist der neueste Teil. Die zugehörigen Einträge, die Bestätigung und die Absenderumstellung sind in Tofus eigenem Testprojekt vollständig durchgelaufen, noch nicht in der App eines Kunden.

Einen Prompt einfügen. In 10 Minuten online.

Ihre App samt Datenbank, Ihre Domain und Ihre Anmeldung – in etwa 10 Minuten mit dem Agenten, den Sie schon nutzen.

Kostenlos starten