Dokumentation / API · Authentifizierung / Anmeldung, Registrierung oder Identitätsverknüpfung starten POST Anmeldung, Registrierung oder Identitätsverknüpfung starten/api/v1/auth/oauth/{provider}/start
login, register und link haben getrennte Zwecke. Registrierung verlangt Freigabe und aktuelle Rechtstextbestätigung. Verknüpfen benötigt Browsersitzung und später frischen Aktionscode. Browsercookie, State und PKCE binden den Ablauf zehn Minuten.
Auf dieser Seite Zugriff und Rechte Parameter und Header Anfragekörper Antworten Wiederholungen und asynchrone Aufträge Anfragebeispiele Verwandte Anleitungen login, register und link haben getrennte Zwecke. Registrierung verlangt Freigabe und aktuelle Rechtstextbestätigung. Verknüpfen benötigt Browsersitzung und später frischen Aktionscode. Browsercookie, State und PKCE binden den Ablauf zehn Minuten.
Eine Kontoanmeldung ist nicht erforderlich. Die angegebenen Prüfungen der Browserherkunft und Nutzungslimits gelten weiterhin.
json Beispiel kopieren
{
"link" : {
"browser_session" : true ,
"csrf" : true
},
"login" : {
"browser_origin" : true
},
"register" : {
"browser_origin" : true ,
"legal_acceptance" : true ,
"registration_gate" : true
}
} Feld Position Typ und Grenzen Erforderlich Bedeutung provider Pfad string; {"enum":["google","github"]} Ja Unterstützter Loginanbieter: google oder github. Origin Header string; {"format":"uri"} Ja Derselbe HTTPS-Origin wie die öffentliche Browserseite. Für Browseranmeldung und Anbieterstart erforderlich.
Feld Typ und Grenzen Erforderlich Bedeutung $ object; {"additionalProperties":false} Ja — $.intent string; {"enum":["login","register","link"]} Ja Gewünschter Anbieterablauf: Anmeldung, Registrierung oder Verknüpfung einer Identität mit dem aktuellen Konto. $.legal_acceptance LegalAcceptance Nein — $.legal_acceptance.privacy_acknowledged boolean; {"const":true} Ja Muss bei erforderlicher Kenntnisnahme der Datenschutzinformationen true sein. $.legal_acceptance.privacy_version string; {"pattern":"^[0-9a-f]{64}$"} Ja SHA-256-Fassung des aktuell veröffentlichten Datenschutztextes. $.legal_acceptance.terms_accepted boolean; {"const":true} Ja Muss bei erforderlicher Annahme der Nutzungsbedingungen true sein. $.legal_acceptance.terms_version string; {"pattern":"^[0-9a-f]{64}$"} Ja SHA-256-Fassung der aktuell veröffentlichten Nutzungsbedingungen. Rufen Sie den aktuellen Text vor Annahme ab. $.return_to string; {"default":"/app"} Nein Zulässiges lokales Ziel nach Anmeldung. Externe und unsichere Ziele werden abgewiesen. $ (allOf 1) JSON Nein —
200 · Erfolgreiche Antwort. Header Typ und Grenzen Bedeutung Cache-Control string; {"pattern":"(?:^|,\\s*)no-store(?:,|$)"} Private API-Antworten verbieten Speicherung. Öffentliche OAuth-Metadaten werden 300 Sekunden gecacht; Livestreams verbieten zusätzlich Transformation. Content-Language string; {"enum":["en","de"]} Sprache lesbarer Antworttexte aus Accept-Language oder der dokumentierten Browserpräferenz. Technische Codes und Kennungen bleiben stabil. Referrer-Policy JSON; {"enum":["strict-origin-when-cross-origin","no-referrer"]} Standard-Referrerpolicy ist strict-origin-when-cross-origin. Anbieterloginantworten verwenden no-referrer zum Schutz der Loginparameter. Vary string Antworten variieren nach Accept-Language; browsergerenderte Antworten können zusätzlich nach Präferenzcookie variieren. X-Content-Type-Options JSON; {"const":"nosniff"} Der Browser muss den angegebenen Inhaltstyp verwenden. X-Frame-Options JSON; {"const":"DENY"} Die Antwort darf nicht in einem Frame eingebettet werden. X-Request-ID string Vom Server erzeugte Anfragekennung. Bei Fehlermeldungen mitgeben; eingehende Werte werden nicht als vertrauenswürdig übernommen.
application/json
Feld Typ und Grenzen Erforderlich Bedeutung $ object Ja — $.authorization_url string Ja —
json Beispiel kopieren
{
"authorization_url" : "demo"
} 401 · Anfrage abgewiesen. Prüfen Sie den stabilen Fehlercode. Stabile Fehlercodes unauthorized
Header Typ und Grenzen Bedeutung Cache-Control string; {"pattern":"(?:^|,\\s*)no-store(?:,|$)"} Private API-Antworten verbieten Speicherung. Öffentliche OAuth-Metadaten werden 300 Sekunden gecacht; Livestreams verbieten zusätzlich Transformation. Content-Language string; {"enum":["en","de"]} Sprache lesbarer Antworttexte aus Accept-Language oder der dokumentierten Browserpräferenz. Technische Codes und Kennungen bleiben stabil. Referrer-Policy JSON; {"enum":["strict-origin-when-cross-origin","no-referrer"]} Standard-Referrerpolicy ist strict-origin-when-cross-origin. Anbieterloginantworten verwenden no-referrer zum Schutz der Loginparameter. Vary string Antworten variieren nach Accept-Language; browsergerenderte Antworten können zusätzlich nach Präferenzcookie variieren. X-Content-Type-Options JSON; {"const":"nosniff"} Der Browser muss den angegebenen Inhaltstyp verwenden. X-Frame-Options JSON; {"const":"DENY"} Die Antwort darf nicht in einem Frame eingebettet werden. X-Request-ID string Vom Server erzeugte Anfragekennung. Bei Fehlermeldungen mitgeben; eingehende Werte werden nicht als vertrauenswürdig übernommen.
application/problem+json
Feld Typ und Grenzen Erforderlich Bedeutung $ Problem Ja — $.code string Ja Stabiler maschinenlesbarer Fehlercode $.detail string Ja Kurze lokalisierte Erklärung ohne interne Fehlerdaten $.instance string Ja Einmalige relative Kennung /api/v1/requests/{request_id}; keine abrufbare Ressource $.message string Ja Vorübergehend für bestehende Clients gleich detail $.message_key string Ja Stabiler Übersetzungsschlüssel für einen Sprachwechsel der Anzeige ohne neue Anfrage $.message_params object; {"additionalProperties":true} Ja Benannte, sicher ausgegebene Meldungsparameter; kein beliebiges HTML $.request_id string; {"pattern":"^[0-9a-f]{32}$"} Ja Vom Server erzeugte Diagnosekennung. Enthält kein Logintoken und keine Zugangsdaten. $.status integer; {"maximum":599,"minimum":400} Ja — $.title string Ja Lokalisierte HTTP-Statusbezeichnung $.type string; {"const":"about:blank"} Ja —
json Beispiel kopieren
{
"code" : "demo" ,
"detail" : "Demo error detail; inspect the documented code." ,
"instance" : "demo" ,
"message" : "Demo error detail; inspect the documented code." ,
"message_key" : "errors.requestFailed" ,
"message_params" : {},
"request_id" : "00000000000000000000000000000000" ,
"status" : 401,
"title" : "Demo error" ,
"type" : "about:blank"
} 403 · Anfrage abgewiesen. Prüfen Sie den stabilen Fehlercode. Stabile Fehlercodes browser_required invalid_origin
Header Typ und Grenzen Bedeutung Cache-Control string; {"pattern":"(?:^|,\\s*)no-store(?:,|$)"} Private API-Antworten verbieten Speicherung. Öffentliche OAuth-Metadaten werden 300 Sekunden gecacht; Livestreams verbieten zusätzlich Transformation. Content-Language string; {"enum":["en","de"]} Sprache lesbarer Antworttexte aus Accept-Language oder der dokumentierten Browserpräferenz. Technische Codes und Kennungen bleiben stabil. Referrer-Policy JSON; {"enum":["strict-origin-when-cross-origin","no-referrer"]} Standard-Referrerpolicy ist strict-origin-when-cross-origin. Anbieterloginantworten verwenden no-referrer zum Schutz der Loginparameter. Vary string Antworten variieren nach Accept-Language; browsergerenderte Antworten können zusätzlich nach Präferenzcookie variieren. X-Content-Type-Options JSON; {"const":"nosniff"} Der Browser muss den angegebenen Inhaltstyp verwenden. X-Frame-Options JSON; {"const":"DENY"} Die Antwort darf nicht in einem Frame eingebettet werden. X-Request-ID string Vom Server erzeugte Anfragekennung. Bei Fehlermeldungen mitgeben; eingehende Werte werden nicht als vertrauenswürdig übernommen.
application/problem+json
Feld Typ und Grenzen Erforderlich Bedeutung $ Problem Ja — $.code string Ja Stabiler maschinenlesbarer Fehlercode $.detail string Ja Kurze lokalisierte Erklärung ohne interne Fehlerdaten $.instance string Ja Einmalige relative Kennung /api/v1/requests/{request_id}; keine abrufbare Ressource $.message string Ja Vorübergehend für bestehende Clients gleich detail $.message_key string Ja Stabiler Übersetzungsschlüssel für einen Sprachwechsel der Anzeige ohne neue Anfrage $.message_params object; {"additionalProperties":true} Ja Benannte, sicher ausgegebene Meldungsparameter; kein beliebiges HTML $.request_id string; {"pattern":"^[0-9a-f]{32}$"} Ja Vom Server erzeugte Diagnosekennung. Enthält kein Logintoken und keine Zugangsdaten. $.status integer; {"maximum":599,"minimum":400} Ja — $.title string Ja Lokalisierte HTTP-Statusbezeichnung $.type string; {"const":"about:blank"} Ja —
json Beispiel kopieren
{
"code" : "demo" ,
"detail" : "Demo error detail; inspect the documented code." ,
"instance" : "demo" ,
"message" : "Demo error detail; inspect the documented code." ,
"message_key" : "errors.requestFailed" ,
"message_params" : {},
"request_id" : "00000000000000000000000000000000" ,
"status" : 403,
"title" : "Demo error" ,
"type" : "about:blank"
} 422 · Anfrage abgewiesen. Prüfen Sie den stabilen Fehlercode. Stabile Fehlercodes invalid_input invalid_request invalid_return_to
Header Typ und Grenzen Bedeutung Cache-Control string; {"pattern":"(?:^|,\\s*)no-store(?:,|$)"} Private API-Antworten verbieten Speicherung. Öffentliche OAuth-Metadaten werden 300 Sekunden gecacht; Livestreams verbieten zusätzlich Transformation. Content-Language string; {"enum":["en","de"]} Sprache lesbarer Antworttexte aus Accept-Language oder der dokumentierten Browserpräferenz. Technische Codes und Kennungen bleiben stabil. Referrer-Policy JSON; {"enum":["strict-origin-when-cross-origin","no-referrer"]} Standard-Referrerpolicy ist strict-origin-when-cross-origin. Anbieterloginantworten verwenden no-referrer zum Schutz der Loginparameter. Vary string Antworten variieren nach Accept-Language; browsergerenderte Antworten können zusätzlich nach Präferenzcookie variieren. X-Content-Type-Options JSON; {"const":"nosniff"} Der Browser muss den angegebenen Inhaltstyp verwenden. X-Frame-Options JSON; {"const":"DENY"} Die Antwort darf nicht in einem Frame eingebettet werden. X-Request-ID string Vom Server erzeugte Anfragekennung. Bei Fehlermeldungen mitgeben; eingehende Werte werden nicht als vertrauenswürdig übernommen.
application/problem+json
Feld Typ und Grenzen Erforderlich Bedeutung $ Problem Ja — $.code string Ja Stabiler maschinenlesbarer Fehlercode $.detail string Ja Kurze lokalisierte Erklärung ohne interne Fehlerdaten $.instance string Ja Einmalige relative Kennung /api/v1/requests/{request_id}; keine abrufbare Ressource $.message string Ja Vorübergehend für bestehende Clients gleich detail $.message_key string Ja Stabiler Übersetzungsschlüssel für einen Sprachwechsel der Anzeige ohne neue Anfrage $.message_params object; {"additionalProperties":true} Ja Benannte, sicher ausgegebene Meldungsparameter; kein beliebiges HTML $.request_id string; {"pattern":"^[0-9a-f]{32}$"} Ja Vom Server erzeugte Diagnosekennung. Enthält kein Logintoken und keine Zugangsdaten. $.status integer; {"maximum":599,"minimum":400} Ja — $.title string Ja Lokalisierte HTTP-Statusbezeichnung $.type string; {"const":"about:blank"} Ja —
json Beispiel kopieren
{
"code" : "demo" ,
"detail" : "Demo error detail; inspect the documented code." ,
"instance" : "demo" ,
"message" : "Demo error detail; inspect the documented code." ,
"message_key" : "errors.requestFailed" ,
"message_params" : {},
"request_id" : "00000000000000000000000000000000" ,
"status" : 422,
"title" : "Demo error" ,
"type" : "about:blank"
} 429 · Anfrage abgewiesen. Prüfen Sie den stabilen Fehlercode. Stabile Fehlercodes rate_limited
Header Typ und Grenzen Bedeutung Cache-Control string; {"pattern":"(?:^|,\\s*)no-store(?:,|$)"} Private API-Antworten verbieten Speicherung. Öffentliche OAuth-Metadaten werden 300 Sekunden gecacht; Livestreams verbieten zusätzlich Transformation. Content-Language string; {"enum":["en","de"]} Sprache lesbarer Antworttexte aus Accept-Language oder der dokumentierten Browserpräferenz. Technische Codes und Kennungen bleiben stabil. Referrer-Policy JSON; {"enum":["strict-origin-when-cross-origin","no-referrer"]} Standard-Referrerpolicy ist strict-origin-when-cross-origin. Anbieterloginantworten verwenden no-referrer zum Schutz der Loginparameter. Retry-After string; {"pattern":"^[0-9]+$"} Sekunden bis zur Wiederholung. Bewahren Sie unterstützte Idempotenzkennungen und beachten Sie die Änderungsregeln der Operation. Vary string Antworten variieren nach Accept-Language; browsergerenderte Antworten können zusätzlich nach Präferenzcookie variieren. X-Content-Type-Options JSON; {"const":"nosniff"} Der Browser muss den angegebenen Inhaltstyp verwenden. X-Frame-Options JSON; {"const":"DENY"} Die Antwort darf nicht in einem Frame eingebettet werden. X-Request-ID string Vom Server erzeugte Anfragekennung. Bei Fehlermeldungen mitgeben; eingehende Werte werden nicht als vertrauenswürdig übernommen.
application/problem+json
Feld Typ und Grenzen Erforderlich Bedeutung $ Problem Ja — $.code string Ja Stabiler maschinenlesbarer Fehlercode $.detail string Ja Kurze lokalisierte Erklärung ohne interne Fehlerdaten $.instance string Ja Einmalige relative Kennung /api/v1/requests/{request_id}; keine abrufbare Ressource $.message string Ja Vorübergehend für bestehende Clients gleich detail $.message_key string Ja Stabiler Übersetzungsschlüssel für einen Sprachwechsel der Anzeige ohne neue Anfrage $.message_params object; {"additionalProperties":true} Ja Benannte, sicher ausgegebene Meldungsparameter; kein beliebiges HTML $.request_id string; {"pattern":"^[0-9a-f]{32}$"} Ja Vom Server erzeugte Diagnosekennung. Enthält kein Logintoken und keine Zugangsdaten. $.status integer; {"maximum":599,"minimum":400} Ja — $.title string Ja Lokalisierte HTTP-Statusbezeichnung $.type string; {"const":"about:blank"} Ja —
json Beispiel kopieren
{
"code" : "demo" ,
"detail" : "Demo error detail; inspect the documented code." ,
"instance" : "demo" ,
"message" : "Demo error detail; inspect the documented code." ,
"message_key" : "errors.requestFailed" ,
"message_params" : {},
"request_id" : "00000000000000000000000000000000" ,
"status" : 429,
"title" : "Demo error" ,
"type" : "about:blank"
} 503 · Anfrage abgewiesen. Prüfen Sie den stabilen Fehlercode. Stabile Fehlercodes provider_unavailable registration_unavailable unavailable
Header Typ und Grenzen Bedeutung Cache-Control string; {"pattern":"(?:^|,\\s*)no-store(?:,|$)"} Private API-Antworten verbieten Speicherung. Öffentliche OAuth-Metadaten werden 300 Sekunden gecacht; Livestreams verbieten zusätzlich Transformation. Content-Language string; {"enum":["en","de"]} Sprache lesbarer Antworttexte aus Accept-Language oder der dokumentierten Browserpräferenz. Technische Codes und Kennungen bleiben stabil. Referrer-Policy JSON; {"enum":["strict-origin-when-cross-origin","no-referrer"]} Standard-Referrerpolicy ist strict-origin-when-cross-origin. Anbieterloginantworten verwenden no-referrer zum Schutz der Loginparameter. Retry-After string; {"pattern":"^[0-9]+$"} Sekunden bis zur Wiederholung. Bewahren Sie unterstützte Idempotenzkennungen und beachten Sie die Änderungsregeln der Operation. Vary string Antworten variieren nach Accept-Language; browsergerenderte Antworten können zusätzlich nach Präferenzcookie variieren. X-Content-Type-Options JSON; {"const":"nosniff"} Der Browser muss den angegebenen Inhaltstyp verwenden. X-Frame-Options JSON; {"const":"DENY"} Die Antwort darf nicht in einem Frame eingebettet werden. X-Request-ID string Vom Server erzeugte Anfragekennung. Bei Fehlermeldungen mitgeben; eingehende Werte werden nicht als vertrauenswürdig übernommen.
application/problem+json
Feld Typ und Grenzen Erforderlich Bedeutung $ Problem Ja — $.code string Ja Stabiler maschinenlesbarer Fehlercode $.detail string Ja Kurze lokalisierte Erklärung ohne interne Fehlerdaten $.instance string Ja Einmalige relative Kennung /api/v1/requests/{request_id}; keine abrufbare Ressource $.message string Ja Vorübergehend für bestehende Clients gleich detail $.message_key string Ja Stabiler Übersetzungsschlüssel für einen Sprachwechsel der Anzeige ohne neue Anfrage $.message_params object; {"additionalProperties":true} Ja Benannte, sicher ausgegebene Meldungsparameter; kein beliebiges HTML $.request_id string; {"pattern":"^[0-9a-f]{32}$"} Ja Vom Server erzeugte Diagnosekennung. Enthält kein Logintoken und keine Zugangsdaten. $.status integer; {"maximum":599,"minimum":400} Ja — $.title string Ja Lokalisierte HTTP-Statusbezeichnung $.type string; {"const":"about:blank"} Ja —
json Beispiel kopieren
{
"code" : "demo" ,
"detail" : "Demo error detail; inspect the documented code." ,
"instance" : "demo" ,
"message" : "Demo error detail; inspect the documented code." ,
"message_key" : "errors.requestFailed" ,
"message_params" : {},
"request_id" : "00000000000000000000000000000000" ,
"status" : 503,
"title" : "Demo error" ,
"type" : "about:blank"
} Für diese Änderung gibt es keine allgemeine Wiederholungsgarantie. Prüfen Sie bei unklarer Antwort den betroffenen Eintrag, bevor Sie es erneut versuchen. Beachten Sie Wartezeiten aus Retry-After und fordern Sie abgelaufene Anmelde- oder Aktionscodes neu an.
Ersetzen Sie Demokennungen, Zeitstempel und Platzhalter durch eigene Werte. Behalten Sie bei Wiederholungen Kennungen, Zeit und Inhalt bei. Diese Beispiele führen auf der Seite keine Anfragen aus.
Halten Sie Anmeldelinks, Codes, Cookies und Schlüssel privat. Schreiben Sie sie nicht in Logs und teilen Sie sie nicht in Hilfeanfragen.
shell Beispiel kopieren
curl --silent --show-error --output /dev/ null --write-out "%{http_code}\n" \
--request POST \
--header "Origin: https://metribeacon.com" \
--header "Content-Type: application/json" \
--data-binary '{"intent":"login"}' \
"https://metribeacon.com/api/v1/auth/oauth/google/start"
python Beispiel kopieren
import json
from pathlib import Path
from urllib.request import Request, HTTPRedirectHandler, build_opener
from urllib.error import HTTPError
headers = {}
headers[ "Origin" ] = "https://metribeacon.com"
headers[ "Content-Type" ] = "application/json"
request = Request( "https://metribeacon.com/api/v1/auth/oauth/google/start" , data= "{\"intent\":\"login\"}" .encode( "utf-8" ), headers=headers, method= "POST" )
class NoRedirect(HTTPRedirectHandler):
def redirect_request(self, request, fp, code, message, headers, target):
return None
opener = build_opener(NoRedirect())
try:
with opener.open(request, timeout=10) as response:
print(response.status)
except HTTPError as error:
print(error.code)
error.close()
javascript Beispiel kopieren
import { readFile } from "node:fs/promises" ;
import { homedir } from "node:os" ;
import { join } from "node:path" ;
const headers = {};
headers[ "Origin" ] = "https://metribeacon.com" ;
headers[ "Content-Type" ] = "application/json" ;
const response = await fetch( "https://metribeacon.com/api/v1/auth/oauth/google/start" , {
method: "POST" , headers, redirect: "manual" ,
signal: AbortSignal.timeout(10000), body: "{\"intent\":\"login\"}" ,
});
console.log(response.status);
await response.body?.cancel();
go Beispiel kopieren
package main
import (
"fmt"
"net/http"
"time"
"strings"
)
func main() {
request, err := http.NewRequest( "POST" , "https://metribeacon.com/api/v1/auth/oauth/google/start" , strings.NewReader( "{\"intent\":\"login\"}" ))
if err != nil { panic( "request failed; credentials and response omitted" ) }
request.Header.Set( "Origin" , "https://metribeacon.com" )
request.Header.Set( "Content-Type" , "application/json" )
client := &http.Client{Timeout: 10*time.Second, CheckRedirect: func (*http.Request, []*http.Request) error { return http.ErrUseLastResponse }}
response, err := client.Do(request)
if err != nil { panic( "request failed; credentials and response omitted" ) }
defer response.Body.Close()
fmt.Println(response.StatusCode)
}
Verwandte Anleitungen HTTP-API, OAuth und MCP Finden Sie die Nutzer-API-Endpunkte mit Rechten, Feldern, Beispielen und Antwortformaten.
GET Anbieterrückruf im ursprünglichen Browser bestätigenPrüft Browserbindung, State, PKCE und Anbieteridentität. Tokens gelangen nicht in Rücksprung-URLs. Vorhandene Mailkonten benötigen ausdrückliche Verknüpfung statt automatischer Zuordnung.
POST Code für eine einzelne sensible Aktion anfordernFordern Sie einen sechsstelligen Bestätigungscode für eine sensible Konto- oder Arbeitsbereichsänderung an. Er gilt fünf Minuten und erlaubt fünf Fehlversuche. Nutzen Sie zur Bestätigung denselben angemeldeten Browser, dieselbe Aktion, dasselbe Ziel und dieselben Parameter. Ein nach 60 Sekunden angeforderter Ersatz macht den bisherigen Code dieser Aktion ungültig. Für Ihr Konto nutzen Sie link_identity, unlink_identity, add_passkey, remove_passkey oder delete_self; Mitgliedschaftsaktionen brauchen Besitzerrechte. Anmeldecodes bestätigen keine Änderungen.
DELETE Eigene ausstehende Aktionsbestätigung abbrechenNur eine ausstehende Bestätigung des aktuellen Kontos und der aktuellen Sitzung kann abgebrochen werden.