Приложение Facebook iFrame - как получить результат предварительной загрузки FQL с помощью PHP SDK? - PullRequest
4 голосов
/ 05 мая 2011

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

Для моей игры мне нужно имя пользователя, изображение, пол и город.

В моей старой версии у меня была эта предварительная загрузкаFQL (созданный один раз сценарием PHP):

$fql = array('info' => array('pattern' => 'facebook',
    'query' => 'SELECT first_name, sex, pic_big, current_location 
    FROM user WHERE uid={*user*}'));

$fb->api_client->admin_setAppProperties(
    array('preload_fql' => json_encode($fql)));

, а затем сценарий моего приложения на FBML был таким простым:

<?php

require_once('facebook.php');

define('FB_API_ID', 'XXX');
define('FB_AUTH_SECRET', 'YYY');

$fb         = new Facebook(FB_API_ID, FB_AUTH_SECRET);
$viewer_id  = $fb->require_login();
$data       = json_decode($fb->fb_params['info'], true);

$first_name = $data[0][0];
$last_name  = $data[0][2];
$female     = ($data[0][3] != 'male');
$avatar     = $data[0][3];
$city       = $data[0][4]['city'];

# and then I'd just construct flashvars attribute
# for the <fb:swf ...> tag and print it

?>

У кого-нибудь есть советы по воссозданиютот же сценарий для версии iFrame - т.е. как я могу получить результат предварительной загрузки FQL моим приложением iFrame ?

Согласно старой записи в блоге Facebook Предварительная загрузка FQL должна быть доступна для приложений iFrame .

Спасибо!Alex

Ответы [ 3 ]

3 голосов
/ 12 мая 2011

Мой собственный ответ после долгого поиска состоит в том, что результаты предварительной загрузки FQL не отправляются в приложения Facebook iframe.

Именно поэтому Документация по производительности Facebook говорит:

"Предварительная загрузка FQL Query and Multiquery.

Этот раздел относится к страницам холста FBML, но не к веб-сайтам или страницам холста IFrame. "

0 голосов
/ 09 мая 2011

Вам не нужно называть FQL для получения информации, которую вы получаете. Для iFrame вам просто нужно выполнить следующие шаги

  1. Загрузить PHP SDK для графа API https://github.com/facebook/php-sdk/

  2. Создание объекта и авторизация приложения от пользователя

    <code> $fbconfig['appid' ]  = "your application id";
    
    $fbconfig['api'   ]  = "your application api key";
    
    $fbconfig['secret']  = "your application secret key";
    
    
    
    
    try{
        include_once "facebook.php";
    }
    catch(Exception $o){
        echo '<pre>';
        print_r($o);
        echo '
    '; } // Создать наш экземпляр приложения. $ facebook = новый Facebook (массив ( 'appId' => $ fbconfig ['appid'], 'secret' => $ fbconfig ['secret'], 'cookie' => правда, )); // Расширенное разрешение местоположения пользователя позволяет вам получить текущее местоположение пользователя $ loginparams = array ('canvas' => 1, 'fbconnect' => 0, 'req_perms' => 'user_location'); $ loginUrl = $ facebook-> getLoginUrl ($ loginparams); // Мы можем иметь или не иметь эти данные на основе сеанса на основе $ _GET или $ _COOKIE. // Если мы получаем сессию здесь, это означает, что мы нашли правильно подписанную сессию, используя // Секрет приложения - только Facebook и Приложение знают. Мы не знаем // если он все еще действителен, пока мы не сделаем вызов API, используя сеанс. Сеанс // может стать недействительным, если он уже истек (не должен получать // сеанс назад в этом случае) или если пользователь вышел из Facebook. $ session = $ facebook-> getSession (); $ fbme = null; // Сеансовый вызов API графа. if ($ session) { пытаться { $ uid = $ facebook-> getUser (); $ fbme = $ facebook-> api ('/ me'); } catch (FacebookApiException $ e) { д ($ е); } } функция d ($ d) { echo '
    ';
        print_r($d);
        echo '
    '; }

    // Вы можете найти все данные в этом массиве. print_r ($ FBME);

Для более подробной информации вы можете следовать этому уроку http://thinkdiff.net/facebook/php-sdk-graph-api-base-facebook-connect-tutorial/

Надеюсь, у вас все получится

0 голосов
/ 05 мая 2011

Как сказал Facebook для предварительной загрузки FQL

" Facebook отправит результат этих запросов FQL в виде параметров POST в формате JSON на URL Canvas "

print_r your $ _ POST и посмотрите, какая переменная является " json-закодированными результатами ". Вы конвертируете json в объект php, используя json_decode

JSON выглядит так: {"var":"val","var":"val"}

Кроме того, в Facebook уже есть отличные документы для фреймов. Тогда вы могли пропустить эти великие документы:

Домашняя страница Документов Facebook

http://developers.facebook.com/docs/

Аутентификация

http://developers.facebook.com/docs/authentication/

Подписанный запрос

http://developers.facebook.com/docs/authentication/signed_request/

Приложения iFrame Canvas

http://developers.facebook.com/docs/guides/canvas/

PHP SDK

https://github.com/facebook/php-sdk

График API

http://developers.facebook.com/docs/reference/api/

...