2012-04-14 10 views
2

Ich möchte einen Service mit der Facebook API an Dritte bereitstellen. Ist es möglich, dass wir Zugangstoken teilen? Wenn der Drittanbieter meinem Dienst das Zugriffstoken eines Benutzers erteilt, kann ich auf diese Benutzerdaten zugreifen, auch wenn meine App-ID & Secret nicht mit der App übereinstimmt, die sie angefordert hat?Teilen von Facebook Access Tokens über Apps

Soll ich die Benutzer einen separaten OAUTH-Flow auf meiner Seite durchlaufen lassen, auch wenn sie es bereits für die andere dritte Partei abgeschlossen haben?

Danke.

-ken

Antwort

3

In Bezug auf:

Ist es uns möglich, Zugriffstoken zu teilen?

und

kann ich auf, dass die Nutzer Daten, selbst wenn mein app_id & Geheimnis die App nicht übereinstimmen, die sie angefordert?

Die Antwort ist No. Aus den Angaben OAuth2 section 10.3:

Access-Token-Anmeldeinformationen (sowie alle vertraulichen Zugriffstoken Attribute) muss beim Transport und der Lagerung vertraulich behandelt werden, und nur unter den Autorisierungsserver, die Ressourcen Server die Zugriffstoken geteilt ist gültig für und den Client, an den das Zugriffstoken ausgegeben wird.


Sollte ich die Benutzer gehen durch einen separaten oauth Fluss auf meiner Seite, auch wenn sie es bereits für die anderen Dritten abgeschlossen haben?

Die Antwort ist Yes. Wenn Sie Facebook als Autorisierungsserver verwenden und den oauth-Fluss erneut starten, muss Ihr Benutzer nur Ihre andere App (Drittanbieter) genehmigen.

+5

Was ist, wenn Sie eine App und eine Website haben, die zusammenarbeiten (sagen wir Twitter und die Twitter App). Wenn Twitter OAuth2 für die Authentifizierung mit Dritten (z. B. Google) verwenden möchte, müssen Sie sowohl die App als auch die Website separat authentifizieren? Scheint sehr ungeschickt und eine schlechte Erfahrung für den Benutzer. – Timmmm

+0

Ich würde das Zitat aus den Spezifikationen als "ja, es ist möglich", aber "nein, du darfst es nicht tun" interpretieren, weil es die Sicherheit verletzen würde. Wenn es nicht möglich war, Token zu teilen, müssen Sie sie nicht sicher aufbewahren. – JRI

2

Jeder Zugriffstoken wird nur für eine App ausgegeben - es kann nicht mit verschiedenen Anwendungs-IDs verwendet werden.

8

Auch wenn dieses Benutzerzugriffstoken nur für eine App ausgegeben wird, kann es problemlos von jeder anderen Anwendung aus verwendet werden.

Beispiel:

  1. Zugriffstoken Erhalten Sie für "Graph API Explorer" Anwendung hier https://developers.facebook.com/tools/explorer/?method=GET&path=me und eine Anfrage - Sie Ihre Daten sehen.
  2. Kopieren Sie Zugriffstoken und öffnen Sie andere Maschine | Browser und gehen Sie zu https://graph.facebook.com/me?access_token=[access_token] - Sie können noch Informationen über Ihre Facebook-Benutzer abrufen!

Hier https://developers.facebook.com/docs/concepts/login/access-tokens-and-types/ erwähnt, dass

Unsere Datenrichtlinien ausdrücklich jegliche gemeinsame Nutzung eines Access-Token für Ihre Anwendung mit einer anderen App verbieten. Entwickler können jedoch Tokens zwischen einer nativen Implementierung und einer Serverimplementierung derselben App (dh mit derselben App-ID) freigeben, solange die Übertragung über HTTPS erfolgt.

+0

Dieser Auszug aus der FB Data Policy nagelt es - offensichtlich müssen Sie in der Lage sein, ein Token zwischen Ihrer nativen App und Ihrer Back-End-App zu teilen, und Sie können dies tun, weil die beiden auch exklusiven credentialed Zugriff auf die FB oauth API teilen . Natürlich hat das OP nicht wirklich danach gefragt. – kingdango

+0

@kingdango, zwei Anwendungen müssen nicht "exklusiven Zugang credentialed Zugriff auf die FB oauth API". Sie können das Zugriffstoken von der FB "Graph API Explorer" -Anwendung abrufen und in Ihrer eigenen App verwenden. –