Facebook Problem autoryzacji

głosy
3

Pracuję w aplikacji Facebook i jest coś po prostu nie jestem zrozumienia, jak działa ich system autoryzacji.

Nasza podstawowa konfiguracja jest to

płótno URL = domain.com/facebook

Jest to prosta strona z elementem FBML iframe, który wskazuje domain.com/facebook/app który jest strona HTML, który serwuje aplikacji Flash.

Flash aplikacja żąda dodatkowych danych z naszego serwera aplikacji - niektóre z tych wniosków poprosić facebook danych (takich jak listy znajomych IDS).

Więc Flash następnie wysyła żądanie do domain.com/resources/facebook/friends - Jest to strona PHP, który tworzy instancję Facebook (ich biblioteki PHP) i wykonuje niezbędne wezwanie do ich API i zwraca dane.

Jednakże wniosek ten adres URL (przez lampę błyskową) nie sprawdza, więc jest wtedy przekierowany do swojego loginu gdy potem sama przekierowuje z powrotem moją płócienną URL z dwoma parametrami - auth_token i następny . Więc wniosek jest poprawny, ale przekierowanie zrywa połączenie błysku.

Więc staram się dowiedzieć jak zrobić także inne wywołań API (gdy sami mace facebook wywołania API) można facebook-vaildated z get-go.

Utwórz 27/01/2009 o 19:14
źródło użytkownik
W innych językach...                            


2 odpowiedzi

głosy
1

Ok, ja zdobione.

Jak się okazuje, Flash już śledzi przekierowań - wszystko, co potrzebne do zrobienia było wykryć (przy URL płótnie), kiedy nie było żądanie autoryzacji (zauważyć obecność auth_token i następne ) i należą do auth_token jako parametr GET kiedy przekierowany do następnego adresu URL (w zasadzie, przekazuje auth_token do pierwotnego wniosku).

Tak więc, w przeciwieństwie do tego, co powiedziałem powyżej, przekierowanie nie złamała połączenie błysku - to po prostu nie mają wystarczająco dużo danych, aby być ważny wniosek.

Odpowiedział 27/01/2009 o 21:55
źródło użytkownik

głosy
1

Rozwiązać umieszczając poniższy kod zamiast „require_login ()” linię

if (isset($_GET['auth_token'])) {
 $sess_data=$facebook->api_client->call_method('auth.getSession',array('auth_token'=>$_GET['auth_token']));
 $facebook->set_user($sess_data['uid'],$sess_data['session_key'],$sess_data['expires']);
 $user=$sess_data['uid'];
}
if (!$sess_data) {
 $user=$facebook->require_login();
}
Odpowiedział 24/01/2010 o 21:01
źródło użytkownik

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more