2009-09-18 9 views
9

Pracuję nad tym od jakiegoś czasu i nie mogę sprawić, żeby działał. Wydaje się, że jest to często zadawane, ale rzadko zadawane pytanie.Facebook Offline Access Key i zaloguj się

Chcę, aby użytkownicy mojej strony internetowej łączyli swoje konto na Facebooku z moją witryną. Dzięki temu mogą zobaczyć swój strumień e.t.c na mojej stronie.

W tej chwili za każdym razem, gdy logują się do mojej witryny, muszą ponownie połączyć się z Facebookiem. Chcę mieć opcję, aby użytkownicy dali mi dostęp do danych w trybie offline, aby nie musieli ponownie logować się do Facebooka/ponownie łączyć się z moją witryną za każdym razem, gdy odwiedzają moją witrynę. Jako ogólny punkt mojej witryny.

Aby to zrobić, rozumiem, że muszę uzyskać dostęp w trybie offline. (https://developers.facebook.com/docs/authentication/) Chociaż z moich poszukiwań wydaje się być nieco lekki na dokumentacji (Facebook offline access step-by-step).

Już wiem, jak poprosić o dostęp w trybie offline Nie jestem pewien, jak uzyskać dane z niego.

Moje pytania są następujące;

  1. Jak mogę uzyskać nowy klucz do sesji infinate po jej zażądaniu?
  2. Kiedy już go mam i przechowuję w bazie danych - Jak utworzyć użytkownika Facebooka, zamiast zwykłego klucza ograniczonego dostępu?

Tylko po dalsze informacje. Używam PHP (codeigniter) z Eliota Haughin za Facebook connect library ale jeśli możesz dać mi kod za pomocą zwykłej biblioteki php ja po prostu przekształcić go

Dzięki bardzo

Odpowiedz

6

Dobrze. Po dalszych poszukiwaniach i pogaduszeniu kodu. Rozgryzłem to.

Testowałem to dla wielu użytkowników i przez cały tydzień i działa jak urok.

Po uzyskaniu uprawnienia offline_outcess, zapisz klucz sesji i identyfikator użytkownika. (gdziekolwiek chcesz, przechowuję moje w mojej bazie danych).

Klucz sesji nieskończonej będzie wyglądać podobnie do tego df4175330aaddb9d50fd8f84-30000799 ze wszystkim po "kresce" będącej identyfikatorem użytkownika.

Wtedy następnym razem zadzwonisz API dodać poniższy wiersz kodu w

$ this-> FB-> set_user ('Facebook User ID', 'klucza dostępu Offline Session' 0,.); N.B. zero jest ilością czasu, zanim wygaśnie. 0 = nigdy.

Mój kod w mojej bibliotece jest następujący

$this->fb = new Facebook($this->_api_key, $this->_secret_key);  
//Query Database to see if user had enabled offline access. 
//If So extract the userid and session key 
$this->fb->set_user($fbuserid, $fbsess, 0); 

W moich próbach ten pracował idealnie. Teraz moi użytkownicy mogą logować się do mojej witryny i mieć facebook automatycznie, gdy udzielą pozwolenia offline_access. Obecnie pracuje przez tydzień bez problemów.

Myślę, że to wszystko. Ale jeśli zostawię cokolwiek, daj mi znać.

+0

SDK Facebooka nie wydaje się mieć teraz metody 'set_user()'. Masz pomysł, jak to będzie działać w nowym pakiecie SDK? –

+0

Cześć przyjaciele, wygląda na to, że się zmienili. Zamieszczam przykładowe połączenie poniżej: \t \t $ data_api ['access_token'] \t = $ fb_access_token; \t $ data_api ['zapytanie'] \t \t \t = "WYBIERZ PID ze zdjęcia WHERE POMOC (WYBIERZ pomoc z albumu WHERE owner = '$ fb_uid')"; \t \t $ data_api ['method'] \t \t = 'fql.query'; \t \t $ result = $ this-> facebook-> api ($ data_api); To działa w nowym app api – Herr

1

Pracuję z Facebook połączyć od ogłosili to na F8 i wprowadzili go do wersji beta rok temu, jestem odpowiedzialny za backendową stronę naszej integracji z Facebookiem na kilku dużych stronach internetowych i spędziłem sporo czasu w tej kwestii.

Oto a good post on the topic, a tutaj jest a bug filed 3 months ago.

Krótko mówiąc, Facebook nie wspiera tego rodzaju promocji sesji - tak, to jest in the docs - ale to nie działa. To oczywiście nie jest coś, co oni faktycznie testują wewnętrznie.

Z doświadczenia wiem, że jeśli nie jest to dobrze udokumentowana, powszechnie używana funkcja, nie można polegać na Facebooku, aby ją utrzymać.

+0

Czy twoja rada by nie przeszkadzać/czekać aż to naprawi? Czy powinienem zbudować back-end zakładając, że zostanie on ustalony na pewnym etapie w przyszłości? –

+0

Załóżmy, że nie zostanie naprawiony. Błąd już od miesięcy jest ignorowany, a wiele błędów, które zgłosiłem, zostało naprawionych na rok lub dłużej, jeśli w ogóle zostały naprawione. –

0

Klucz wygasa za każdym razem, gdy użytkownik zmieni swoje hasło. Jest to napisane w dokumentacji.

+1

To nie jest związane z moim pytaniem. –