Danke schon mal für die Antworten, auch wenn ich noch nicht alles ganz verstehe oder sinnvoll finde.
Wenn ich eine
VCL/FMX App schreiben wollte die diese APIs nutzt, müsste ich irgendwelche Anmeldeinformationen
(z.B. Benutzername/Passwort) an den Server schicken (wie? definiert OAuth das?) und würde wenn ich's richtig
verstanden habe ein Token bekommen, welches für einen begrenzten Zeitraum gültig ist. Richtig?
Richtig: wenn man sich per OAuth 2.0 anmelden will, zeigt dein Webbrowser eine Loginmaske und wenn Du deine Anmeldedaten sendest, erhält dein Browser einen HTTP Redirect zurück, d.h. er soll auf eine Seite gehen die der Third-Party-Anbieter bei GitHub hinterlegt hat. (Redirects werden von OAuth extensiv genutzt - siehe
RFC 6749 Spezifikation)
=> Eigentlich müsste das nicht zwingend eine Webseite sein, wenn man OAuth in einer eigenen App nutzen wollte, sondern könnte ein FMX Benutzername/Passwort Formular sein,
der die Daten dann in der richtigen Form an die GitHub Webseite sendet. Allerdings müsste man dann vermutlich Änderungen an der Loginseite von GitHub nachziehen, falls diese
relevant sein sollten für den eigentlichen Login Prozess. Dann würde mann eine Redirect
URL als Antwort bekommen. Aber was soll man dann auf der anderen Seite?
Ist das sozusagen die eigentliche Webanwendung die man ausführen wollte?
Dein Beispiel bringt bei mir nur die Telekom navigations Hilfeseite
Wenn ich dich weiter unten aber richtig verstehe war es eh' ein nicht wirklich umgesetztes Beispiel.
Vermutlich ist im Token vermerkt bis wann bzw. wie lange es gültig ist.
Dieses Token muss ich bei den entsprechenden Aufrufen mitschicken, sonst sagt der angefragte Server nur:
"keine Berechtigung". Richtig?
Und ich könnte aufpassen wann das Token abläuft um mit den gemerkten Logindaten rechtzeitig ein neues
anzufordern. Richtig?
Token und Logindaten würde ich vorzugsweise im Speicher der Anwendung halten, da andere Anwendungen dann
schwerer dran kommen als an eine Datei. Richtig?
Ja, so ist es.
Oder wozu bräuchte ich dann noch einen Server unter meiner Kontrolle?
Für die Anmeldung ist ein Server erforderlich, an den das Token gesendet wird.
Warum braucht es dazu einen Server? Hätte man das Token nicht einfach an den anforderer des Tokens in der HTTP Response schicken können?
Dein Beispiel braucht den Server, weil der die Dienstleistung anbieten will. Wenn aber die Dienstleistung von einer App auf dem Smartphone kommt, bräuchte ja die das Token und da könnte es etwas umständlich sein einen Server aufmachen zu müssen, falls das überhaupt so geht.