OAuth для мобильных устройств Facebook redirect_uri

Признавая, что аутентифицированный реферальный механизм в настоящее время не работает с настройками мобильных веб-приложений для приложений Facebook, я m столкнулся с проблемой проверки токена доступа на основе возвращенного кода.

URL-адрес, для которого я пытаюсь получить токен доступа: https://staging.fanhood.com/facebook/mobile/challenge?fh_gameChallengeID=2678&ref=web_canvas&refid=9&refsrc=http://apps.facebook.com/fanhood-dev/challenge&returned=true

Это URL-адрес, на который отправляется посетитель после предварительной аутентификации с этого URL-адреса: http://apps.facebook.com/fanhood-dev/challenge?fh_gameChallengeID=2678. Однако, в отличие от обычных аутентифицированных рефералов, в URL-адрес не передаются дополнительные данные, поэтому приложение может сократить цикл перенаправления oauth.

На данный момент я перенаправляю посетителя в диалоговое окно мобильного OAuth для аутентификации: http://m.facebook.com/dialog/oauth?client_id=250258605018414&redirect_uri=https%3A%2F%2Fstaging.fanhood.com%2Ffacebook%2Fmobile%2Fchallenge%3Ffh_gameChallengeID%3D2678%26ref%3Dweb_canvas%26refid%3D9%26refsrc%3Dhttp%3A%2F%2Fapps.facebook.com%2Ffanhood-dev%2Fchallenge%26returned%3Dtrue&scope=email%2Cfriends_about_me%2Cfriends_education_history%2Cfriends_hometown%2Cfriends_interests%2Cfriends_likes%2Cfriends_location%2Coffline_access%2Cpublish_actions%2Cpublish_stream%2Cuser_activities%2Cuser_birthday%2Cuser_education_history%2Cuser_hometown%2Cuser_games_activity%2Cuser_interests%2Cuser_likes%2Cuser_location&response_type=кодидисплей=сенсорный»отн=

Когда пользователь перенаправляется обратно, я получаю код для обмена:

Код: AQBCH25OC57BiMBgj3rCKGhkFi0ypp0R8e2yKGwFfhml9x1B47-w2Baex8oZ3BKgb2NhziRnSIuJ1MV9hErKBUhu0YqxaonwFF_7mcqozwpy3Ch08rkNh-YEIa6HV_LHxl6pymfkAbQEMgSA6F4BdtINsCQ7QlLpcRwrZWkzxZVyJbJDnqOesB3zFLr5ohpgtpQ

Однако ни один из моих запросов на обмен этого кода в настоящее время не работает. Я пробую разные варианты формата redirect_uri, ни один из которых не работает:

Исходный URL как redirect_uri:

У меня есть механизм для удаления определенных параметров запроса, изменения их порядка в алфавитном порядке и повторной сборки, чтобы redirect_uris были согласованы между запросами. В этом случае redirect_uri точно соответствует тому, что было передано в URL-адрес диалога: https://staging.fanhood.com/facebook/mobile/challenge?fh_gameChallengeID=2678&ref=web_canvas&refid=9&refsrc=http://apps.facebook.com/fanhood-dev/challenge&returned=true == https://staging.fanhood.com/facebook/mobile/challenge?fh_gameChallengeID=2678&ref=web_canvas&refid=9&refsrc=http://apps.facebook.com/fanhood-dev/challenge&returned=true

HTTPS: // график , %2F%2Fapps.facebook.com%2Ffanhood-dev%2Fchallenge%26returned%3Dtrue&code=AQBCH25OC57BiMBgj3rCKGhkFi0ypp0R8e2yKGwFfhml9x1B47-w2Baex8oZ3BKgb2NhziRnSIuJ1 MV9hErKBUhu0YqxaonwFF_7mcqozwpy3Ch08rkNh-YEIa6HV_LHxl6pymfkAbQEMgSA6F4BdtINsCQ7QlLpcRwrZWkzxZVyJbJDnqOesB3zFLr5ohpgtpQ & access_token = 250258605018414% 7C65adc2f073d3c901d02a7329c6acba21

Пустая попытка redirect_uri для аутентифицированных рефералов:

HTTPS: //graph.facebook .com / OAuth / access_token? client_id = 250258605018414 & client_secret = ххх & redirect_uri = & код = AQBCH25OC57BiMBgj3rCKGhkFi0ypp0R8e2yKGwFfhml9x1B47-w2Baex8oZ3BKgb2NhziRnSIuJ1MV9hErKBUhu0YqxaonwFF_7mcqozwpy3Ch08rkNh-YEIa6HV_LHxl6pymfkAbQEMgSA6F4BdtINsCQ7QlLpcRwrZWkzxZVyJbJDnqOesB3zFLr5ohpgtpQ & access_token = 250258605018414% 7C65adc2f073d3c901d02a7329c6acba21

redirect_uri, структурированный как URL-адрес нашего мобильного холста:

HTTPS: / /graph.facebook.com/oauth/access_token?client_id=250258605018414&client_secret=xxx&redirect_uri=https%3A%2F%2Fm.facebook.com%2Fapps%2Ffanhood-dev%2Fchallenge%3Ffh_gameChallengeID%3D2678%26ref%3Dweb_refs6canvas%292refid %3Dhttp%3A%2F%2Fapps.facebook.com%2Ffanhood-dev%2Fchallenge%26returned%3Dtrue&code=AQBCH25OC57BiMBgj3rCKGhkFi0ypp0R8e2yKGwFfhml9x1B47-w2Baex8oZ3BKgb2NhziRnSIuJ1MV9hErKB Uhu0yqxaonwff_7mcqozwpy3ch08rknh-yaia6hv_lhxl6pymfkabqemgsa6f4bdtinscq7qllpcrrwrzwkzczvyjbjdnqoesb3zflr5ogrybjdnqoesb3zeken = 250258605018414% 7C65ADC2F073D3C901D02A7329C6ACBA21

redirect_uri структурирован как URL-адрес нашего холста:

HTTPS: // график , %2F%2Fapps.facebook.com%2Ffanhood-dev%2Fchallenge%26returned%3Dtrue&code=AQBCH25OC57BiMBgj3rCKGhkFi0ypp0R8e2yKGwFfhml9x1B47-w2Baex8oZ3BKgb2NhziRnSIuJ1MV9hErKBUhu0Yqxa onwFF_7mcqozwpy3Ch08rkNh-YEIa6HV_LHxl6pymfkAbQEMgSA6F4BdtINsCQ7QlLpcRwrZWkzxZVyJbJDnqOesB3zFLr5ohpgtpQ&access_token=250258605018414%7C61adc2f073d2a731d3c901

Кто-нибудь знает, какой формат redirect_uri Facebook использует для мобильных запросов OAuth? А если параметры запроса поддерживаются? Этот же URL-адрес работает для нашего обычного приложения на основе холста, но не для нашей мобильной версии.


person Jesse Proulx    schedule 11.07.2012    source источник


Ответы (1)


См. Аутентифицированные рефералы и поток аутентификации на стороне сервера - Что такое redirect_uri?

Когда я удалил часть request_uri после &code=..., она начала работать.

person Tobi    schedule 16.08.2012
comment
Спасибо, я реализовал вторичное перенаправление, которое исходило от моего сервера, чтобы обойти это, но с использованием исходного URL-адреса запроса и удаления всего, что прошло с &code=, работает. - person Jesse Proulx; 28.09.2012