Ich entwickle eine iPhone-Anwendung, die auf der Kommunikation mit dem Server basiert, und möchte Facebook-Authentifizierungsmechanismen verwenden.
Grundsätzlich denke ich, dass es so funktionieren sollte:
- In meiner iPhone-App meldet sich der Benutzer mit seiner E-Mail-Adresse und seinem Passwort bei Facebook an.
- Der Benutzer ermöglicht den Zugriff auf seine Daten für verwandte Facebook-Anwendungen.
- Meine iPhone-App erhält nach erfolgreicher Anmeldung ein Zugriffstoken.
- Bei der weiteren Kommunikation mit meinem Server sollte meine iPhone-Anwendung das empfangene Facebook-Zugriffstoken verwenden (z. B. bei Abfragen).
- Wenn mein Server eine Anfrage von der iPhone-App mit Zugriffstoken erhält, sollte er Facebook fragen, ob dieses Token gültig ist (und für wen), und wenn ja, sollte der Server davon ausgehen, dass der Benutzer bei Facebook authentifiziert ist.
Meine Frage ist: Wie soll der Server Facebook fragen, ob das angegebene Zugriffstoken gültig ist? Ich denke, ich sollte irgendwie überprüfen, ob das Token für meine Facebook-App gültig ist.
Ich habe viele Facebook-Abfragen zur grafischen Darstellung der API versucht, die ich gefunden habe, aber nichts hat so funktioniert, wie ich es erwartet hatte. Können Sie mir ein Beispiel geben?
iphone
facebook
authentication
Marcin
quelle
quelle
Antworten:
Hier ist ein zweistufiger Prozess, mit dem Sie überprüfen können, ob ein Benutzerzugriffstoken zu Ihrer App gehört:
1) Generieren Sie ein App Access Token
( https://developers.facebook.com/docs/howtos/login/login-as-app/ )
2) Debuggen Sie das Benutzerzugriffstoken
( https://developers.facebook.com/docs/howtos/login/debugging-access-tokens/ )
Dabei ist INPUT_TOKEN das Benutzerzugriffstoken, das Sie überprüfen möchten, und ACCESS_TOKEN das Token Ihrer App, das Sie aus Schritt 1 erhalten haben.
Der Debug-Endpunkt gibt im Grunde alle Informationen zu einem Token aus, sodass er wie folgt antwortet:
Wenn dieses Token nicht von "Ihrer App" stammt, wird eine Fehlerantwort zurückgegeben.
quelle
Ich gehe davon aus, dass Sie das Zugriffstoken bereits in der Hand haben. In einem solchen Fall besteht die einfachste Möglichkeit, ein Zugriffstoken zu validieren, darin, die folgende Anforderung auszugeben
Ersetzen Sie hier @accesstoken durch das Zugriffstoken, das Sie haben. Ich werde die URL aufschlüsseln und jede erklären.
Wir geben hier eine Grafik-API-Anfrage aus, die die Facebook-Benutzer-ID des Besitzers des Zugriffstokens als JSON-Zeichenfolge zurückgibt. Das Schlüsselwort 'ich' steht für den aktuell angemeldeten Benutzer oder den Eigentümer des Zugriffstokens. Für diese Anforderung ist das Zugriffstoken ein obligatorischer Parameter.
Wenn das bereitgestellte Zugriffstoken ungültig ist oder abgelaufen ist, gibt Facebook nur eine Fehlermeldung zurück.
Für ein gültiges Zugriffstoken sieht das Ergebnis irgendwie so aus
quelle
Eine andere Lösung wäre die Verwendung
https://graph.facebook.com/app/?access_token=[user_access_token]
wie unter Abrufen der Anwendungs-ID vom Benutzerzugriffstoken beschrieben (oder Überprüfen der Quellanwendung für ein Token) .Dies scheint eine undokumentierte Funktion zu sein, gibt jedoch JSON zurück, das die ID der App enthält, für die das Token generiert wurde. Wenn das Token nicht für Ihre App war, wird eine 400 zurückgegeben.
quelle
In der neuesten Version von Facebook (2.2) können Sie dies folgendermaßen tun:
Beispielausgabe:
quelle
Sie können das Facebook SDK für PHP von GitHub herunterladen .
quelle
Wenn ein Benutzer Ihnen eine Facebook-UID übergeben hat, von der er behauptet, dass sie ihnen gehört, und Sie überprüfen möchten, ob sie legitim ist, ist dies eine Python-Funktion, die sie anhand ihres Zugriffstokens überprüft (eine Implementierung der Antwort von Robin Jome):
quelle
Dies ist die einzige sichere Methode, um Benutzertoken mit nur einer Anforderung zu überprüfen:
Beachten Sie, dass ein Zeichen "|" in der obigen URL wird nicht als ODER, sondern als Trennzeichen verwendet und muss vorhanden sein, nachdem die anderen Felder ausgefüllt wurden.
Die Antwort lautet wie folgt: JSON sieht folgendermaßen aus:
Referenz: https://developers.facebook.com/docs/facebook-login/access-tokens/#apptokens (die obige Methode wird am Ende dieses Abschnitts erwähnt)
quelle
Zusammen mit einem Zugriffstoken sendet Facebook auch einen "expires_in" -Parameter, bei dem es sich um einen Offsetwert handelt. Verwenden Sie diese Option, um zu berechnen, wann das Zugriffstoken als NSDate abläuft. Wenn Sie dann eine Anfrage stellen müssen, vergleichen Sie das aktuelle Datum mit dem Ablaufdatum.
Versuchen Sie auch, die Statuscodes und Antwortzeichenfolgen zu überprüfen, die Facebook zurücksendet.
quelle