# Show installed Nodes
nvm ls
# Show available versions
nvm ls-remote
# Install latest version
nvm install node
# Install LTS version
nvm install --lts
# Install a specific version (list available -> example 16.18.0)
nvm install 16.18.0
# Use a specific version
nvm use 16.18.0
# Show npm version
npm --version
Um das Benutzererlebnis der cloudbasierten IAM Lösung OneLogin komplett zu machen, muss irgendwann halt auch mal der Logout folgen.
Das hatte ich bisher nicht so wirklich auf dem Schirm, schließlich heißt es ja "OneLogin" und nicht "OneLogout".
Der Logout stellte uns erstmal vor große Probleme, denn irgendwie wollte kein Ansatz so richtig funktionieren. Irgendwann hatte ich dann aber die richtigen Informationsteile richtig zusammengepuzzelt und dann war es super einfach.
Konfiguration OneLogin
In der Konfiguration im OneLogin unter OIDC -> Configuration -> Post Logout Redirect URI setzen.
In der Applikation selbst muss eigentlich nichts konfiguriert werden.
Es muss lediglich ein Link aufgerufen werden.
In der Konfiguration des vorgeschalteten Reverse Proxies ist folgender Block für den OIDC-Connector:
#this is required by mod_auth_openidc
OIDCCryptoPassphrase
OIDCProviderMetadataURL
OIDCClientID
OIDCClientSecret
# OIDCRedirectURI is a vanity URL that must point to a path protected by this module but must NOT point to any content
OIDCRedirectURI https://www.meinetolleanwendung.de/private/redirect_uri
## OIDCScope params
## to put params including roles into header
OIDCScope "openid email profile groups params"
Wir benötigen die OIDCRedirectURI und fügen lediglich ein ?logout für den logout an, gefolgt von = https://www.meinetolleanwendung.de/logoutseite.html für den Redirect zur Post-Logoutseite.
Ich möchte den programmatischen Zugriff auf YouTube ausprobieren um ggf. später mit ein paar Ideen zu experimentieren.
Nach der ersten Erkenntnis, dass das gar nicht so gut dokumentiert ist, wie ich es erwartet hätte, folgt die zweite Erkenntnis, dass man dafür einen Api Key braucht.
Hier also die Notizen, wie ich meinen API Key angelegt habe.
Eine schöne Anleitung
Auf Kodi-Tipps gibt es eine schöne, bebilderte Anleitung, der ich hier folge.
Da dort eigentlich alles ausführlich beschrieben zu sein scheint, notiere ich hier nur knapp die Schritte, die ich ausführen werde.
Die Google Developer Console
Den YouTube API Key gibt es über Google und da ich bisher noch nicht viele Erfahrungen mit den Google Produkten als Entwickler gemacht habe, hier die erste wichtige URL zum Einstieg: Die Google Developer Console
Vor ewigen Zeiten hatte ich dort schon mal etwas getestet (Google Auth/Login in KeyCloak eingebunden) und daher ist schon ein Projekt vorhanden, in welchem ich direkt nach Seitenaufruf arbeite:
Natürlich möchte ich nicht in dem Projekt weiterarbeiten, sondern ein neues anlegen:
Meine Schritte in Bildern
User data vs Public data ? Ich bin mir nicht ganz sicher, was ich benötige. Ich brauche keine persönlichen Informationen, aber ich würde gerne zB die letzten angesehenen Videos meines YouTube Accounts abrufen können.
Starten wir mit Public data. Die Kodi Anleitung hat User data ausgewählt. Vermutlich werde ich später auch auf User data umsteigen müssen.
Public Data
Für Tests & Entwicklung richte ich keine Restrictions ein. Sollte mal irgendwann irgendwas irgendwie produktiv gehen, wird eh ein neuer API Key angelegt werden und der wird dann runter restrictiert so weit es geht.
Ganz klasse: Beim Testen des Keys erhalte ich immer "The request is missing a valid API key.". Toll. Könnte natürlich auch daran liegen, dass ich keine Ahnung habe, was ich da treibe und das falsch mache. Nützt alles nix, nächster Test mit Personal Data, das wird hoffentlich besser laufen.
Einen Hinweis habe ich noch gefunden, bracht mich aber erstmal nicht weiter:
Personal Data
Entweder finde ich den Einstieg von vorhin nicht mehr, oder durch Anlegen eines ersten API Keys hat sich die Oberfläche verändert und ich muss anders vorgehen.
Create geklickt, paar Sachen ausgefüllt, unsicher geworden, abgebrochen.
Nix besseres gefunden, später wieder auf "OAuth client ID" geklickt, dann sah es wieder anders aus, das ist dann die nächste Seite:
Erstmal mit einer Desktop App starten, später wird dann vielleicht mal eine Web App daraus.
Belohnt wird man dann mit einer OAuth Client-ID und Client-Secret. Sogar im JSON-Format, das ich mir abspeicher.
Ich habe dann noch ein paar Sachen getestet, aber irgendwie war der Wurm drin, nix ging.
Workaround: Projekt löschen, neu anfangen.
Was ein Spaß.
Zweiter Anlauf
Direkt mit User data weiter:
Scopes -> nix geändert -> "Save and continue"
Tja, leider kann ich aber keine User hinzufügen. Toll.
Nächster Anlauf:
Und noch einen API Key generieren:
Frust
Ich habe die Keys mit Postman und in Java Code ausprobiert, aber nichts hat funktioniert. Sehr frustrierend.
So wird das nichts. Ich brauche ein gutes Tutorial.
Die YouTube API Keys konnte ich anlegen, aber gebracht hat es mir nichts.
Der Tag danach
So ganz wollte ich doch nicht aufgeben und habe am Tag nach meinen YouTubeAPIGedöns Experimenten doch noch einen Versuch gewagt.
Über einen Stackoverflow Post habe ich ein Beispiel für eine API Query gefunden:
Als KEY habe ich meinen gestern generierten API Key genommen, als CHANNEL-ID habe ich aus meiner YouTube Abo Liste einen Link zu einem Kanal, und daraus den letzten Teil, genommen.
In meinem Beispiel https://www.youtube.com/channel/UC0RBJwg8ZfRM8TLGOKTpArA -> UC0RBJwg8ZfRM8TLGOKTpArA
Diese Informationen habe ich in Postman eingetragen und konnte endlich eine erfolgreiche Anfrage absenden:
In der Authorization Section hatte ich zuerst den Type auf No Auth zurückgestellt. Das scheint aber nicht erforderlich zu sein.
YAY!
Glück
Bei der Auswahl des Kanals hatte ich Glück!
Denn der Kanal verwendet eine Kanal-URL. Beispiel: youtube.com/channel/UCUZHFZ9jIKrLroW8LcyJEQQ
Viele andere Kanäle in meiner Abo Liste verwenden noch eine alte benutzerdefinierte URL. Beispiel: youtube.com/c/YouTubeCreators
Mit einer alten benutzerdefinierten URL funktioniert der Aufruf nämlich nicht, sondern nur mit der Kanal-URL.