Ich habe die Facebook Graph API (verwendet oauth 2.0 für die Authentifizierung) erfolgreich für eine Weile jetzt verwendet. Ich muss jetzt meine eigene API schreiben, die es Entwicklern ermöglicht, sich auf ähnliche Weise mit ihr zu verbinden. Ich habe in verschiedenen Bibliotheken angesehen, aber ich möchte etwas ein wenig schlanker, so dass ich beschlossen habe, meine eigene Rolle. Wenn ich mir den Code ansehe, mit dem ich einen Benutzer bei Facebook authentifizieren muss, sieht es relativ einfach aus, aber bitte korrigieren Sie mich, wenn ich vom Weg abgekommen bin.
Zunächst müsste ich eine sichere Seite bereitstellen, auf die der Verbraucher umgeleitet werden müsste. https://api.mydomain.com/oauth/authorize?client_id=CONSUMER_KEY&redirect_url=CALLBACK_URL . Der Benutzer würde die Anwendung überprüfen, dann würde ich wieder auf die URL in der Callback-URL mit dem oauth_token in der Abfragezeichenfolge zur Verfügung gestellt umleiten. Ich nehme an, ich könnte nur eine zufällige eindeutige Zeichenfolge hier für die oauth_token generieren und speichern Sie es gegen den Benutzer für diesen bestimmten Verbraucher (EDIT: Bitte sehen Sie die Antwort unten, dies sollte für jeden Verbraucher Anwendung und nicht der Benutzer eindeutig sein).
Damit ist Schritt 1 erledigt. Ich muss nun eine zweite sichere Seite bereitstellen, die der Verbraucher mit einer Web-Anfrage ansteuern würde. https://api.mydomain.com/oauth/access_token?client_id=CONSUMER_KEY&client_secret=CONSUMER_SECRET&oauth_token=OAUTH_TOKEN_RETURNED_ABOVE . Dies würde es dem Verbraucher ermöglichen, das oben zurückgegebene oauth_token gegen ein Zugangs-Token auszutauschen. Auch hier würde ich einfach eine zufällige, eindeutige Zeichenfolge generieren und sie für den Benutzer dieses bestimmten Verbrauchers speichern.
Jetzt würde meine API das access_token für Methoden akzeptieren, die versuchen, benutzerspezifische Informationen abzurufen, die sie verwenden.
Ich würde gerne wissen, ob ich die Dinge richtig verstanden habe. Die OAuth 2.0 Spezifikation scheint extrem trivial zu sein, wenn das der Fall ist. Und warum müssen wir den oauth_token mit einem access_token austauschen? Ich habe meine eigene Idee, aber ich wäre dankbar, wenn jemand helfen könnte, dies zu klären.
Ich würde mich sehr über Ihr Feedback freuen, denn ich möchte nicht stundenlang damit beschäftigt sein, dies zu implementieren, wenn es völlig falsch ist.
Danke