Проблема авторизации на Facebook - PullRequest
3 голосов
/ 27 января 2009

Я работаю над приложением facebook и кое-что не понимаю, как работает их система авторизации.

Наша базовая настройка это

холст URL = domain.com/facebook

Это простая страница с элементом FBML Iframe, который указывает на domain.com/facebook/app, который является HTML-страницей, которая обслуживает приложение Flash.

Приложение Flash запрашивает дополнительные данные с нашего сервера приложений - некоторые из этих запросов запрашивают данные Facebook (например, список идентификаторов друзей).

Итак, Flash затем отправляет запрос на domain.com/resources/facebook/friends - это страница PHP, которая создает экземпляр Facebook (их библиотеку PHP), выполняет необходимый вызов их API и возвращает данные.

Однако запрос к этому URL-адресу (по флэш-памяти) не проверяется, поэтому он перенаправляется на их имя входа, а затем сам перенаправляет обратно мой URL-адрес холста с двумя параметрами - auth_token и следующий . Таким образом, запрос действителен, но перенаправление прерывает флеш-вызов.

Итак, я пытаюсь выяснить, как сделать так, чтобы эти другие вызовы API (когда они сами исполняют вызовы API Facebook) были привязаны к Facebook с самого начала.

Ответы [ 2 ]

1 голос
/ 24 января 2010

Решите, поместив код ниже вместо строки require_login ()

if (isset($_GET['auth_token'])) {
 $sess_data=$facebook->api_client->call_method('auth.getSession',array('auth_token'=>$_GET['auth_token']));
 $facebook->set_user($sess_data['uid'],$sess_data['session_key'],$sess_data['expires']);
 $user=$sess_data['uid'];
}
if (!$sess_data) {
 $user=$facebook->require_login();
}
1 голос
/ 27 января 2009

Хорошо, я понял это.

Как оказалось, Flash уже следует перенаправлениям - все, что мне нужно было сделать, это обнаружить (по URL-адресу холста), когда был запрос на авторизацию (отмечается наличием auth_token и next ) и включают auth_token в качестве параметра GET, когда я перенаправляю на следующий URL (в основном, перенаправляем auth_token в исходный запрос).

Итак, вопреки тому, что я сказал выше, перенаправление НЕ прерывало флэш-вызов - просто не было достаточно данных, чтобы быть действительным запросом.

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