2012-05-18 2 views
0

Я работаю над приложением для холста Facebook (это приложение для флеш-приложений), все вызовы Facebook выполняются с помощью клиента (JS SDK), я настроил php-сеть сервис на моем сервере для хранения и чтения данных из моей базы данных, так что в основном на данный момент я вообще не использую php sdk для Facebook.Защитите мой веб-сервис от вызова без активной сессии Facebook

Что было бы самым простым способом защитить мой веб-сервис от вызова без активной сессии Facebook?


UPDATE: Работали это, ответ Павла является правильным, спасибо @Paul.

Вопрос был прост: инициализация JS sdk выполнена ПОСЛЕ php-сеанса, поэтому дальнейшие вызовы в мои php-файлы не были зарегистрированы как вход в систему. Для того, чтобы он работал, я инициализировал сеанс Facebook в файле, который встраивает swf (был Html, теперь это php), это означает, что обработка пользователей, которые еще не разрешала приложение, выполнялась через php, прежде чем swf будет даже загружен. Теперь я могу полагаться на активную сессию и идентификацию пользователя в моем веб-сервисе, кофе сегодня намного лучше.

ответ

0

Я не думаю, что есть действительно хороший способ сделать это, не проверяя, что токен доступа FB действителен.

Если бы я был вами, я бы использовал SDK для проверки сеансов. Это очень легко использовать просто захватить его с here и попробуйте следующий код:

<?php 
require 'php-sdk/src/facebook.php'; 

$facebook = new Facebook(array(
    'appId' => 'YOUR_APP_ID', 
    'secret' => 'YOUR_APP_SECRET', 
)); 

// See if there is a user from a cookie 
$user = $facebook->getUser(); 

if ($user) { 
    // you have a secure session 
} 
+0

Спасибо Павел, я пытался просто это ... однако, $ facebook-> GetUser() всегда возвращает 0 - как никакой активной сессии (У меня есть экземпляр приложения Facebook, я могу получить приложение access_token) - любые идеи? – adifmac

+0

имеет ли определенную регистрацию пользователя в facebook и авторизовал ваше приложение? Им пришлось бы следить за потоком на этой странице: http://developers.facebook.com/docs/guides/web/#login –

+0

Да, пользователь вошел в систему и авторизировал приложение. Однако пользователь не должен загружать эту «страницу» напрямую, это «веб-сервис» для флеш - для сохранения и загрузки данных, он возвращает объекты JSON. В принципе, если он вызывается flash (и в будущем - мобильным приложением), он является «безопасным» вызовом зарегистрированного пользователя. И это точно проблема. Как я могу ограничить доступ к этому «веб-сервису» только тем пользователям, которые в настоящее время вошли в мое приложение Facebook? – adifmac