2012-01-31 18 views
7

Używam facebook php library do uwierzytelniania użytkowników do mojej aplikacji, działa dobrze, ale z jakiegoś powodu Facebook dołącza znaki #_=_ do końca mojego zwrotu URI. Czytałem, że zrobili to, jeśli parametr redirect_uri nie był ustawiony, ale mam go ustawiony, w rzeczywistości jestem przekierowany do tego adresu URL pomyślnie po zalogowaniu się na Facebooku.facebook api dodawanie # _ = _ do mojego powrotu UU

Oto jak uzyskać adres URL logowania:

$fbLoginUrl = $fb->getLoginUrl(array(
    'scope' => 'email,publish_stream,user_birthday,user_photos,friends_photos', 
    'redirect_uri' => 'http://myapp.net/auth' 
)); 

wszystko działa poprawnie to tylko kosmetyczna sprawa chyba. Czy ktoś może mi pomóc?

Z góry dziękuję!

+0

i tutaj znajduje się błąd, http://bugs.developers.facebook.net/show_bug.cgi?id = 20504 – Jashwant

Odpowiedz

4

Na blogu deweloperskim Facebooka powiedziano, że jeśli jawnie ustawisz parametr redirect_uri, nie dostaniesz #_=_ dołączonego do interfejsu zwrotnego. Ale tak nie jest. Nadal masz te znaki nawet przy ustawianiu pola redirect_url. Ale to nie wpłynie na twój przepływ.

Sprawdź to: Session Redirect Behavior - setting redirect_uri explicitely

+0

westchnienie, więc domyślam się, że to nie jest facebook :( – javiervd

2

Można tylkopozbyć tej stronie klienta.

Można by pomyśleć, że można rozwiązać ten po stronie serwera poprzez przekierowanie do adresu URL bez kotew:

  • facebook przekierowuje do http://MyFacebookRedirectUrl...#_=_
  • Następnie możemy przekierować do jakiegoś nowego adresu URL, bez kotwicy

.... Ale #_=_ pojawia się ponownie za pomocą magii w pasku adresu przeglądarki - jak?

Patrz odpowiedź Jamesa Pearce'a w http://developers.facebook.com/bugs/318390728250352:

„Niektóre przeglądarki dołączy fragment hash z adresu URL do końca nowego adresu URL do których zostały przekierowane (jeśli nowy adres URL sama nie mają fragment skrótu). "

i również w ten sposób:

http://blogs.msdn.com/b/ieinternals/archive/2011/05/17/url-fragments-and-redirects-anchor-hash-missing.aspx

Firefox, Chrome i Opera [a teraz IE10] ponownie dołączyć URL Fragment po przekierowania HTTP/3xx miało miejsce, nawet chociaż że fragment nie był obecny w adresie URL określonego przez nagłówek Location od odpowiedzi przekierowania

Więc jeśli po prostu wykonujesz przekierowania po stronie serwera ze strony przekierowania Facebooka, będziesz musiał usunąć tę stronę klienta.

Inną alternatywą jest przekierowanie strony serwera na URL zawierający inną nazwaną kotwicę - ale to naprawdę nie rozwiązuje problemu i nie wszystkie przeglądarki wykonają to samo.

Powiązane problemy