Аутентифицированные рефералы и поток аутентификации на стороне сервера. - PullRequest
3 голосов
/ 17 марта 2012

От аутентифицированного реферала (например, из хронологии) до моего веб-сайта я пытаюсь использовать поток аутентификации на стороне сервера для получения токена доступа для указанного пользователя.Мне нужно передать секрет приложения, код авторизации и исходный URI перенаправления в конечную точку маркера доступа Facebook.Поскольку я не инициировал запрос аутентификации, как мне определить исходный redirect_uri?

Ссылка с временной шкалы Facebook выглядит следующим образом:

http://www.facebook.com/connect/uiserver.php?app_id=153644678059870&method=permissions.request&redirect_uri=http%3A%2F%2Fwww.wnmlive.com%2Fpost%2F141833948%3Ffb_action_ids%3D10100708033267487%26fb_action_types%3Dwnm-live%253Acomment%26fb_source%3Drecent_activity&response_type=code&display=page&auth_referral=1

Так что я понял, что URI перенаправления мне нуженпередать:

http%3A%2F%2Fwww.wnmlive.com%2Fpost%2F141833948%3Ffb_action_ids%3D10100708033267487%26fb_action_types%3Dwnm-live%253Acomment%26fb_source%3Drecent_activity

URI, на который в конечном итоге перенаправляется пользователь:

http://www.wnmlive.com/post/141833948?fb_action_ids=10100708032119787&fb_action_types=wnm-live%3Apost&fb_source=recent_activity&code=AQALK-Mwb_Nwi4z7FWnFaL6tEXvNtVJiRKrgarG9X73sp22TJyk8v2GWKtuXuevJk4hPSRNnuNpEgZXLFdOS_k-pY-mE15DYytIa8Y7VdSw3VL-XYi-CR9BCqRQGq4uBJvSSdZayCp6MWzDMaNqWd5r8OhKVnOhg_yDlvfoLl21N2SMwkJaOfD5mlPnPb5A-Q4A#_=_

Можно ли предположить, что я могу просто отрубить все, начиная с кода "&= "и использовать это как URI перенаправления?

Ответы [ 5 ]

2 голосов
/ 20 марта 2012

По словам инженера из Facebook, redirect_uri - это текущий URI до "& code =". Код всегда будет конечной парой имя / значение строки запроса. Я также убедился, что это работает.

0 голосов
/ 19 декабря 2012

Я подал ошибку на Facebook здесь: https://developers.facebook.com/bugs/141862359298314

Если это все еще влияет на ваше приложение, пожалуйста, подпишитесь.

0 голосов
/ 08 ноября 2012

Как указал Карл, после кода есть дополнительные параметры. В отличие от Карла, если я удаляю их и использую полученный URL в качестве uri перенаправления, это работает.

$redirecturi = $_SERVER['SCRIPT_URI'];
$delimiter = "?";
foreach ($_GET as $key=>$val) {
    if ($key == "code") break;
    $redirecturi .= $delimiter.$key."=".rawurlencode($val);
    $delimiter = "&";
}
// now I can use $redirecturi to exchange the code for a token

http://developsocialapps.com/authenticated-referrals-facebook-apps/

0 голосов
/ 22 сентября 2012

В дополнение к тому, что сказал Карл, я сузил проблему из-за определенного параметра ref.

Если у вас включен реферальный oauth, я не смогу обменять код на access_token сконкретные ссылки.

Примеры:

Они не будут работать с рефералом oauth независимо от того,что redirect_uri вы используете для генерации access_token.Возможно, есть другие параметры ref, которые не работают.

Это очень раздражает, потому что у нас не может быть мобильного веб-приложения, работающего с этой проблемой

0 голосов
/ 23 августа 2012

В настоящее время (23 августа 2012 г.) Facebook добавляет параметры после кода =, например, http://apps.coincident.tv/newgirltalk/mobile/?ref=bookmarks;code=AQCZmt8n9NyfKNj8Ea9yzeCYCh-m6FcrbFqqnpQRYpfTwsO8DCk5E6CIbYig1I7g5RxDZxNs7pLcQZDdfjdLJy-8IE4BAW56VPNVADTIa9zxsFEVGLTCjfP7tuSNAIeNZdWecI53pQipnt4YpnawoRXDYVVylFZnWoVYdMtVCaOjZ5DUrN9VSByNVkV5ojOoCEY;fb_source=bookmark_favorites;count=0;fb_bmpos=4_0

Удаление всего из кода = не приводит к токену доступа и не приводит к тщательному удалению только кодазнак равнораздел.

Это можно воссоздать, добавив закладку Facebook, указывающую на ваше приложение, открыв www.facebook.com в браузере вашего мобильного устройства, а затем перейдя в приложение через закладку.

...