# Einen Client registrieren

> Wie ein Vorstandsmitglied eine Integration in der Konsole Entwickler registriert, welche Art zu wählen ist, was genau registriert werden muss.

URL: https://developers.vimine.network/de/start/register-a-client/

Jede Integration ist ein **Client**, registriert in der Konsole **Entwickler** der Vimine-App. Die Konsole
ist dem Vorstand des Vereins vorbehalten: Wenn Sie ihm nicht angehören, bitten Sie ein Vorstandsmitglied, den Client für Sie
zu registrieren und Ihnen die Zugangsdaten zu geben.

Ohne Verein — als Agentur, für ein Plugin oder um die API auszuprobieren — bitten Sie die Plattform um eine
**Einladung als Entwickler**: Sie erhalten eine eigene [Sandbox](https://developers.vimine.network/de/guides/sandbox/), einen Testverein mit synthetischen
Mitgliedern, und registrieren dort Ihre Test-Clients selbst, unter Annahme der Bedingungen für Entwickler.
Production-Clients bleiben beim Verein, für den Sie arbeiten.

## Arten von Clients

| Art | Für | Zugangsdaten | Hinweise |
|---|---|---|---|
| **Website** (öffentlich) | Seiten im Browser | nur `client_id` | PKCE Pflicht; exakte `https`-Redirect-URIs |
| **Native App** | mobile oder Desktop-Apps | nur `client_id` | wie oben; Loopback-Redirects (`http://127.0.0.1:{port}/…`) oder ein eigenes Schema |
| **Server** (vertraulich) | ein Backend des Vereins | `client_id` + `client_secret` | das Secret wird einmal angezeigt; nie im Browser |

Öffentliche und native Clients nutzen **Mit Vimine anmelden** und rufen die API mit dem Token des Mitglieds auf.
Vertrauliche Clients können sich zusätzlich selbst authentifizieren (`client_credentials`), für die „Client“-Berechtigungen,
etwa die Ausweisstatus.

## Umgebungen

| Umgebung | Wo sie lebt | Wann sie aktiv ist |
|---|---|---|
| **Test** | in der [Sandbox](https://developers.vimine.network/de/guides/sandbox/) des Vereins (bei Bedarf angelegt) | **sofort** |
| **Production** | im echten Verein | nach der Aktivierung durch Vimine: Sie erhalten eine E-Mail |

Test-Clients stellen Tokens mit `mode: "test"` aus und können den echten Verein nicht berühren. Ihre vertraulichen
Zugangsdaten beginnen mit `vms_test_`.

## Was Sie registrieren

1. **Name** — was das Mitglied auf der Einwilligungsseite sieht („*Name* möchte auf Ihr Profil zugreifen …“).
2. **Art** und **Umgebung**.
3. **Redirect-URIs** — die Seiten, zu denen Vimine den Browser nach der Anmeldung zurückschicken darf. Der Abgleich ist **exakt**
   (Schema, Host, Port, Pfad): Registrieren Sie jede Callback-Seite, die Sie verwenden werden.
4. **Erlaubte Origins** — die Origins (`https://www.example.org`), von denen aus Ihre Seiten die API im Browser aufrufen.
   Sie dienen für CORS und als erlaubte Ziele nach der Abmeldung (`post_logout_redirect_uri`).
5. **Berechtigungen** — die Scopes, die die Integration anfordern darf. Fordern Sie nur an, was Sie brauchen: Das Mitglied sieht
   sie alle. Ein öffentlicher oder nativer Client darf nur Mitglieder-Berechtigungen haben; „Client“-Berechtigungen erfordern einen vertraulichen
   Client. Tabelle in [Berechtigungen, Fehler und Limits](https://developers.vimine.network/de/guides/scopes-and-errors/).

Beim Anlegen erhalten Sie die `client_id` (`vmc_…`) und, bei vertraulichen Clients, das `client_secret` (`vms_…`),
das **nur einmal** angezeigt wird. Für Test-Clients zeigt die Konsole außerdem die synthetischen Mitglieder der Sandbox und ihr
Passwort.

## Lebenszyklus

- **Secret erneuern** — das neue Secret wird einmal angezeigt; **das bisherige funktioniert noch 24 Stunden**, sodass Sie
  Ihre Systeme ohne Ausfall umstellen können.
- **Aussetzen** — die Tokens des Clients funktionieren nicht mehr, bis Sie ihn wieder aktivieren. Die Reaktivierung liegt beim Vorstand.
- **Widerrufen** — endgültig: Jede Sitzung des Clients endet sofort, und Mitglieder sehen ihn nicht mehr unter ihren
  verbundenen Apps.
- Mitglieder können ihre Einwilligung jederzeit unter **Verbundene Apps** in ihrem Konto widerrufen: Die Sitzungen dieses Clients
  für dieses Mitglied enden.

:::tip[Lokale Entwicklung]
Ein **Test**-Client darf `http://localhost:…` als Redirect-URIs und Origins haben: So entwickelt man normalerweise.
In Production nur `https` (abgesehen von Loopback, für native Apps).
:::
