Может ли фреймы приложения на вкладке Facebook Page обнаружить страницу, через которую они просматриваются? - PullRequest
0 голосов
/ 19 июля 2011

Я разрабатываю свое первое приложение для Facebook на PHP, и мне было интересно, может ли приложение обнаружить страницу на Facebook, в которой оно просматривается.Я планирую отображать приложение на нескольких разных страницах и хочу, чтобы приложение отображало что-то свое для каждой из страниц.Таким образом, мне нужно будет только, чтобы пользователь принял разрешения для одного центрального приложения вместо нескольких разных.

Ответы [ 2 ]

7 голосов
/ 19 июля 2011

Да. Существует signed_request (POST) с идентификатором страницы ... Вы не можете получить полный URL-адрес, поскольку запрос выполняется через прокси-сервер Facebook. Вот способ, которым вы можете сделать это, а потом просто обслуживать контент на основе идентификатора страницы ...

        $signed_request = $_POST['signed_request'];
        $response = Facebook::parse($signed_request);            
        $page_id = $response['page']['id']; 

(это только часть моего класса)

class Facebook {

    // Facebook signed request parser    
    public static function parse($signed)
    {

        list($encoded, $payload) = explode('.', $signed, 2); 

        $sig = Facebook::base64_url_decode($encoded);
        $data = json_decode(Facebook::base64_url_decode($payload), true);

        if(strtoupper($data['algorithm']) !== 'HMAC-SHA256'){
            error_log('Unknown algorithm. Expected HMAC-SHA256');
            return false;
        }

        return $data;

    }

    // Base64 decode for Facebook
    private static function base64_url_decode($input)
    {
        return base64_decode(strtr($input, '-_', '+/'));
    }

}

редактирование:

Как вы сказали, вам нужно авторизовать приложение только один раз для каждого пользователя, и вы сможете использовать его на всех страницах (у меня их сотни). Это вывод команды signature_request, когда пользователь «подключен» к приложению.

Array
(
    [algorithm] => HMAC-SHA256
    [expires] => 0
    [issued_at] => 1311062412
    [oauth_token] =>
    [page] => Array
        (
            [id] => 149715315100385
            [liked] => 1
            [admin] => 1
        )

    [user] => Array
        (
            [country] => ba
            [locale] => en_US
            [age] => Array
                (
                    [min] => 21
                )

        )

    [user_id] => 1368368917
)

Вы можете увидеть page-> id, user_id, также вы получите токен для доступа к пользовательской информации (для тех, у кого у вас есть разрешение).

1 голос
/ 19 июля 2011

Вы устанавливаете это местоположение в приложении разработчика при создании первого приложения.Перейдите на facebook.com/developers и создайте новое приложение, и вы сможете указать местоположение вашего приложения Canvas, которое затем загружается в app.facebook.com/YOUR_APP_NAME.

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