30 lines
6.0 KiB
Plaintext
30 lines
6.0 KiB
Plaintext
1. Deezer App anlegen: https://developers.deezer.com/myapps → Redirect URI http://localhost:8080/auth/callback
|
||
2. Backend starten:
|
||
cd libredeck-web
|
||
DEEZER_APP_ID=xxx DEEZER_APP_SECRET=yyy mvn spring-boot:run
|
||
3. Android: In app/build.gradle die BACKEND_URL anpassen, dann in Android Studio öffnen und builden
|
||
4. Gradle Wrapper fehlt noch im Android-Projekt — entweder gradle wrapper ausführen oder aus linkster-android kopieren
|
||
|
||
|
||
Was gebaut:
|
||
|
||
7 neue Backend-Dateien:
|
||
- AppleMusicConfig – Properties: apple.music.team-id, apple.music.key-id, apple.music.private-key
|
||
- AppleMusicTokenGenerator – erzeugt und cached den Developer-JWT (ES256, standard Java-Crypto, keine neuen Deps)
|
||
- AppleMusicTokenStore – Session-scoped Storage für den Music User Token (wie bei Spotify/Tidal)
|
||
- AppleMusicApiClient – HTTP-Client gegen api.music.apple.com; unterstützt Catalog- und Library-Playlists, ThreadLocal-Token-Pinning für async Jobs
|
||
- AppleMusicProvider – implementiert StreamingProvider, wird automatisch im Registry registriert
|
||
- AppleMusicAuthRequiredException
|
||
- AppleMusicController – Endpunkte: /apple/configured, /apple/connected, /apple/developer-token, /apple/token, /apple/disconnect, /apple/playlists
|
||
|
||
Geändert:
|
||
- GenerateController – Apple Music Auth-Check (nur für Library-Playlists) + Token-Pinning
|
||
- index.html – 4. Service "Apple Music" im Switcher, MusicKit JS v3 Auth-Flow, Playlist-Picker
|
||
|
||
Konfiguration (in .env eintragen):
|
||
APPLE_MUSIC_TEAM_ID=XXXXXXXXXX
|
||
APPLE_MUSIC_KEY_ID=XXXXXXXXXX
|
||
APPLE_MUSIC_PRIVATE_KEY=-----BEGIN PRIVATE KEY-----\n...\n-----END PRIVATE KEY-----
|
||
Benötigt wird ein MusicKit-Key aus dem Apple Developer Portal. Ist nichts konfiguriert, bleibt das Panel sichtbar aber zeigt "nicht konfiguriert".
|
||
|