Как кодировать redirect_uri для входа в Facebook - PullRequest
4 голосов
/ 21 апреля 2011

Я пытаюсь создать ссылку для входа в Facebook и получаю сообщения об ошибках только в некоторых случаях. Я пытаюсь указать параметр строки запроса в redirect_uri токене, чтобы я мог перенаправить их обратно в определенную область моего сайта после входа в систему. Вот что работает, а что нет.

&redirect_uri=http://mydomain.com/login?returnUrl=returnUrl - работает &redirect_uri=http://mydomain.com/login?returnurl=/return/url - не работает &redirect_uri=http%3a%2f%2fmyagentcheckin.com%2flogin%3freturnUrl%3d%2freturn%2furl - не работает

Кажется, что / в строке запроса приводит к сбою. Facebook возвращает ошибку, когда я пытаюсь это сделать. Кто-нибудь знает способ обойти это?

Ответы [ 4 ]

5 голосов
/ 01 июля 2011

Вместо включения параметра returnUrl в качестве части значения redirect_uri используйте параметр состояния для хранения этих данных.

Например,

https://graph.facebook.com/oauth/authorize?type=web_server&client_id={appid}&redirect_uri=http://www.yoursite.com/oauth/handshake&state=/requested/page

1 голос
/ 21 апреля 2011

Я испытал нечто подобное, особенно с несколькими перенаправлениями, как указано выше.

Мое решение состоит в том, чтобы поместить returnUrl в сеанс пользователя (или, возможно, в файл cookie), чтобы мне не пришлось бороться с двойным кодированием. Для redirect_url просто опустите строку запроса.

0 голосов
/ 25 апреля 2011

Когда я попробовал то, что ты делаешь, я получил перенаправленный обратный вызов примерно так http://mydomain.com/login?returnurl=%2Freturn%2Furl&code=...

И я декодирую значение returnurl. Тогда у меня все заработало.

0 голосов
/ 23 апреля 2011

Попробуйте использовать этот API , который вместе взятый. Это избавит вас от хлопот.

Кодировка URL не требуется.

Пример аутентификации

Imports Branches.FBAPI
...
Dim SI As New SessionInfo("[application_id]","applicaiton_secret")
SI.AuthenticateUser("http://[my url]", New SessionInfo.PermissionsEnum(){SessionInfo.PermissionsEnum.email, SessionInfo.PermissionsEnum.read_stream}))

Прочитайте ответ по указанному выше URL-адресу с этой страницы.

Dim FSR = FS.ReadFacebooAuthResponse
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...