2012-01-31 2 views
7

Я использую php-библиотеку facebook для аутентификации пользователей в своем приложении, он работает нормально, но по какой-то причине facebook добавляет символы #_=_ до конца моего возврата uri. Я прочитал, что они сделали это, если параметр redirect_uri не был установлен, но у меня он установлен, на самом деле я перенаправлен на этот URL успешно после входа в систему на facebook.facebook api appending # _ = _ to my return uri

Вот как я получаю URL входа:

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

Все отлично работает, это просто косметическая вещь, я думаю. Может кто-нибудь мне помочь?

Заранее благодарен!

+0

и ошибка здесь, http://bugs.developers.facebook.net/show_bug.cgi?id = 20504 – Jashwant

ответ

4

На блоге разработчиков Facebook было сказано, что если вы явно установили параметр redirect_uri, вы не получите #_=_, добавленный к url ​​обратного вызова. Но это не так. Вы все равно получаете эти символы даже при установке поля redirect_url. Но это не повлияет на ваш поток.

Проверьте это: Session Redirect Behavior - setting redirect_uri explicitely

+0

вздох, так что я думаю, что это facebook терпят неудачу тогда :( – javiervd

2

Вы можете только избавиться от этого на стороне клиента.

Вы могли бы подумать, что вы могли бы решить эту сторону сервера, перенаправляя на URL без якоря:

  • facebook перенаправляет http://MyFacebookRedirectUrl...#_=_
  • Тогда мы перенаправлять в какой-то новый URL, без якоря

.... но #_=_ вновь появляется по волшебству в адресной строке браузера - как?

См ответ Джеймса Пирса на http://developers.facebook.com/bugs/318390728250352:

«Некоторые браузеры добавит хэш-фрагмент из URL в конце нового URL, к которому они были перенаправлены (если это новый URL не сам есть хэш-фрагмент).

, а также это:

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

Firefox, Chrome и Opera [и теперь IE10] повторно прикрепить URL Фрагмент после HTTP/3xx Перенаправление имеет место, даже хотя этот фрагмент не присутствовал в URL, указанный в заголовке Расположение на ответ переназначения

Итак, если вы просто переадресации на серверную страницу со своей страницы переадресации на Facebook, вам придется удалить эту клиентскую сторону.

Другой альтернативой является перенаправление на стороне сервера URL-адреса, который содержит другой именованный якорь, но это на самом деле не решает проблему, и не все браузеры будут делать то же самое.