2009-06-16 8 views
12

Ich entwickle eine Website für einen Kunden, der bereits die Fotos seiner Produkte auf Facebook hat, und er möchte, dass die gleichen Alben über seine Website repliziert werden. Ich habe Facebook Connect schon benutzt, also habe ich eine Kombination von photos.getAlbums und photos.get fallen gelassen, um die Galerien dynamisch zu machen.Facebook API ohne Client-Authentifizierung für öffentliche Inhalte

So weit so gut, aber dann erkannte ich, dass wenn keine Benutzer durch FBC angemeldet ist, keine Sitzung erstellt wird und die API unbrauchbar wird, auch für Inhalte, die öffentlich verfügbar sind. Ich möchte die Alben natürlich allen zeigen und nicht nur den Leuten, die ihre Accounts verbinden.

Funktionieren alle Funktionen in der Facebook-API? Was ist die beste (leichter zu implementierende) Problemumgehung für diese Situation?

Antwort

11

Ab September 2010 können Sie jetzt nur als eine Anwendung ohne zugeordneten Benutzer authentifizieren. Einzelheiten finden Sie unter http://developers.facebook.com/docs/authentication/. Oder Sie können diesen Beispielcode zum Ausführen ein Zugriffstoken zu erhalten:

curl -F grant_type=client_credentials \ 
-F client_id=your_app_id \ 
-F client_secret=your_app_secret \ 
https://graph.facebook.com/oauth/access_token 
+0

Danke! Das ist jetzt die richtige Antwort. – lima

+0

Leider führt dieser Link jetzt zu einer ziemlich nutzlosen Seite über Facebook Login. Es scheint, dass sie in ihrer Werbung für Login noch weniger klar machen, dass diese "App-Token" -Methode sogar eine Option ist. Es wird jedoch immer noch [hier] (https://developers.facebook.com/tools/access_token) angezeigt, was beruhigend ist. – nkorth

0

Das macht für mich keinen Sinn - ich habe eine (relativ einfache) App, die auf Facebook rendert, auch wenn der Benutzer sich noch nie bei Facebook eingeloggt hat (in diesem Fall zeigt er Demo-Daten an).

Bei Verwendung der Facebook-PHP-Bibliothek, ich dies nur tun:

$ facebook = new Facebook ($ api_key, $ Geheimnis);

Keine Sitzungs-ID erforderlich - aber offensichtlich funktionieren API-Funktionen, die von Informationen über den Benutzer abhängen, nicht.

Sie können auch nach einem "infinite session" für Ihre App suchen - Sie können einen unbegrenzten Sitzungsschlüssel für sich selbst erstellen und diese Sitzung verwenden, um auf die API zuzugreifen.

+0

Dank, kann ich natürlich meine app machen (in diesem Fall nur Backend-Code ist) ohne Benutzersitzung, aber ich kann nicht von der Verwendung API-Funktionen, mit denen ich Inhalte aus den Alben ziehen kann. Die "unendliche Sitzung" Idee klang gut, aber es ist teilweise veraltet: http://wiki.developers.facebook.com/index.php/New_Design_Platform_Changes#Changes_to_Session_Keys – lima

3

Für die Aufzeichnung habe ich es geschafft, diese Situation zu lösen, indem eine kleine Back-End-Entwicklung, die den Client einmal Book anmelden erfordert und offline_accessextended permission an die FB-App geben, so kann ich seine Sitzungsschlüssel speichern und verwenden sie die authentifizieren Facebook API-Client jedes Mal, wenn ich FQL verwenden muss, um nicht-öffentlichen Inhalt zu erhalten.

Man könnte natürlich etwas Caching in der Mitte hinzufügen, um unnötige Anfragen an Facebook zu vermeiden, aber es funktioniert seit Monaten gut, ohne irgendwelche Grenzen zu treffen, von denen ich weiß.

+0

Große Antwort - das scheint die aktuellste Möglichkeit, dies zu tun . Aus Neugier - Wie haben Sie den Benutzer authentifiziert? Ich verwende derzeit das JS SDK am Frontend, aber für meine App (CMS) möchte ich Posts auf einer Facebook-Seite veröffentlichen, wenn ein Redakteur einen Beitrag auf seiner Website veröffentlicht. (Dann PostId für likes/comments/etc speichern) Idealerweise würde ich den Benutzernamen/pw für einen fb-Seiten-Admin speichern und graph API verwenden, um sich unsichtbar zu authentifizieren. Irgendwelche Beispiele dafür? Vielen Dank! – Jason

+0

Wie Lacker sagt, hat sich das FB-Auth-Schema geändert. Folgen Sie dem Link und dem Beispiel in seiner Antwort, um es zu verstehen. Ich markiere das als das Richtige. – lima

+0

Hier ist ein aktualisierter Link: https://developers.facebook.com/docs/facebook-login/permissions/v2.5#reference-extended. Die Berechtigung offline_access wurde jedoch eingestellt: https: //developers.facebook.com/docs/roadmap/completed-changes/Offline-Zugriff-Entfernung –

Verwandte Themen