59 lines
2.0 KiB
Markdown
59 lines
2.0 KiB
Markdown
# Android App Links und OAuth
|
|
|
|
## Verbindliche Domain
|
|
|
|
Die Produktions-App verwendet ausschließlich `https://www.your-part.de`.
|
|
Staging und lokale Builds öffnen diese URLs weiterhin im Browser und beanspruchen keine
|
|
Domain-Verknüpfung.
|
|
|
|
## Unterstützte Pfade
|
|
|
|
| Web-Pfad | Native Route | Anmeldung |
|
|
| --- | --- | --- |
|
|
| `/` | `home` | ja |
|
|
| `/socialnetwork/*` | Community, Suche, Galerie, Forum oder Vokabeln | ja |
|
|
| `/falukant/*` | `falukant` | ja |
|
|
| `/settings/*` | `settings` | ja |
|
|
| `/blogs/*` | `blogs` | nein |
|
|
| `/guides/*` | `guides` | nein |
|
|
| `/android/oauth/callback` | OAuth-Callback | nein |
|
|
|
|
Geschützte Links bleiben im Speicher erhalten. Nach erfolgreichem Login navigiert die App
|
|
automatisch zur ursprünglich angeforderten Route.
|
|
|
|
## OAuth
|
|
|
|
Die native App startet `/api/auth/oauth/{provider}/start?client=android` in einer Android
|
|
Custom Tab. Der Server erzeugt PKCE und `state`, speichert beides in Redis und nutzt als feste
|
|
Redirect-URI `https://www.your-part.de/android/oauth/callback`. Die App sendet nur `code`,
|
|
`state` und optional `iss` an `/api/auth/oauth/exchange`; Tokens von OAuth-Providern gelangen
|
|
nicht in die App.
|
|
|
|
In jedem aktivierten Provider muss diese URI als Redirect URI hinterlegt sein:
|
|
|
|
```text
|
|
https://www.your-part.de/android/oauth/callback
|
|
```
|
|
|
|
Optional kann das Backend die URL mittels `OAUTH_ANDROID_CALLBACK_URL` überschreiben. Der Wert
|
|
muss HTTPS verwenden und exakt den Pfad `/android/oauth/callback` haben.
|
|
|
|
## assetlinks.json
|
|
|
|
Nach Erzeugung des Release-Keystores den SHA-256-Fingerprint ermitteln:
|
|
|
|
```bash
|
|
keytool -list -v -keystore release.jks -alias <alias>
|
|
```
|
|
|
|
`frontend/public/.well-known/assetlinks.json.example` nach
|
|
`frontend/public/.well-known/assetlinks.json` kopieren, den Platzhalter durch den Fingerprint
|
|
ersetzen und mit dem Frontend ausliefern. Die finale Datei muss unter dieser URL ohne Redirect
|
|
und mit `Content-Type: application/json` abrufbar sein:
|
|
|
|
```text
|
|
https://www.your-part.de/.well-known/assetlinks.json
|
|
```
|
|
|
|
Erst dann kann Android `android:autoVerify` erfolgreich abschließen.
|