Переключение FBML в iFrame pageID как запрос? - PullRequest
0 голосов
/ 29 августа 2011

Мы разработали приложение для Facebook в виде вкладки с использованием FBML.Теперь Facebook отказался от fbml, и мы конвертируем наше приложение в iframe.Для этого пользователь может создать страницу FB и добавить приложение на свою страницу в Facebook.Мы берем идентификатор страницы Facebook пользователя и регистрируем в БД этот идентификатор страницы и показываем данные для этого конкретного пользователя.В приложении на вкладке FBML мы получаем идентификатор страницы facebook в качестве запроса ($ REQUEST ['page_id']).Кажется, это больше не работает.

  1. Когда мы конвертируем приложение в приложение на вкладке IFRAME, FB не предоставляет идентификатор страницы.Мы не используем GRAPH API, и перед просмотром приложения проводится какая-либо аутентификация.Я прочитал на форуме, что Facebook подписал запрос, мы получим идентификатор страницы и использовали следующий код, но не получили никаких данных.

    $sgrequest = $_REQUEST['signed_request'];
    $requestVal = parse_signed_request($sgrequest,$secret);
    print_r($requestVal);
    $_REQUEST['signed_request']['app_data']
    
    function parse_signed_request($signed_request, $secret) {
    list($encoded_sig, $payload) = explode('.', $signed_request, 2);
    // decode the data
    $sig = base64_url_decode($encoded_sig);
    $data = json_decode(base64_url_decode($payload), true);
    
     if (strtoupper($data['algorithm']) !== 'HMAC-SHA256') {
       error_log('Unknown algorithm. Expected HMAC-SHA256');
       return null;
     }
    
     // check sig
     $expected_sig = hash_hmac('vctly987', $payload, $secret, $raw = true);
     if ($sig !== $expected_sig) {
       error_log('Bad Signed JSON signature!');
       return null;
     }
    
     return $data;
    

    }

    функция base64_url_decode ($ input){return base64_decode (strtr ($ input, '-_', '+ /'));}

  2. Есть ли другой способ получить идентификатор страницы фан-страницы через javascript или любым другим способом?

Ответы [ 2 ]

1 голос
/ 30 августа 2011

пытались ли вы распечатать $ requestVal [page] [id] после анализа подписанного запроса?

в соответствии с документацией , подписанный запрос содержит массив с именем "page"содержит ключ 'id'.Здесь хранится значение идентификатора страницы.

0 голосов
/ 29 августа 2011

Можете ли вы убедиться, что вы включили параметр миграции Sign_request для Canvas в своем приложении https://developers.facebook.com/apps/.

Настройки приложения -> Дополнительно

...