2011-05-05 2 views
4

몇 년 전부터 FBML 앱 (작은 Flash game)을 가지고있어 iFrame 앱으로 변환하려고합니다. 안타깝게도 Facebook iFrame 앱을위한 문서는 아직 많이 없습니다.Facebook iFrame 앱 - PHP SDK를 사용하여 프리로드 FQL 결과를 가져 오는 방법?

내 게임에는 사용자의 이름, 사진, 성별 및 도시가 필요합니다.

$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 

?> 

합니까 누군가 내 이전 버전에서

나는 (PHP 스크립트에 의해 한 번 생성)이 프리로드 FQL했다 iFrame 버전에 의해 FQL 프리로드 결과를 가져올 수있는 방법에 대한 힌트를 얻으십시오.

오래된 Facebook 블로그 항목 Preload FQL should be accessible by the iFrame apps에 따르면.

감사합니다. 알렉스

답변

3

긴 검색 후 내 자신의 대답은 프리로드 FQL 결과가 페이스 북의 애플 리케이션을하면 iframe 전송되지 것입니다 위해 작동 바랍니다.

Facebook performance doc 말한다 이유 :

"사전로드 FQL 쿼리 및 Multiquery

이 섹션은 웹 사이트 또는 iframe 캔버스 페이지에 FBML 캔버스 페이지에 적용됩니다,하지만.."

0

페이스 북과

에서 print_r "페이스 북은 당신의 캔버스 URL에 JSON 인코딩 POST 매개 변수로이 FQL 쿼리의 결과를 보낼 것"사전로드 FQL에 대해 말했듯이 당신의 $ _POST이고 어떤 변수가 "json 인코딩 결과"인지 확인하십시오. iframe을위한 {"var":"val","var":"val"}

또한, 페이스 북은 이미이 큰 문서 : 당신은

JSON은 다음과 같습니다 json_decode를 사용하여 PHP 객체로 JSON 변환합니다. 그럼 당신이 놓친 것이 큰 문서 :

페이스 북 문서 도구 홈

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

인증

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

서명 요청

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

iFrame을 캔버스 앱

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

PHP의 SDK

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

그래프 API

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

+0

불행히도 위에 나열된 잘 알려진 링크 목록은 내 질문에 전혀 답하지 않습니다. iFrame 응용 프로그램에서 Preload FQL 결과를 가져 오는 방법입니다. 그리고 print_r ($ _ POST)은 하나의 문자열 만 출력합니다 : [signed_request] => xR38Gp9fj ... –

+0

음, 아마도 서명 된 요청입니다! 그것을 디코딩하고 모든 것을 print_r하십시오. – MatejB

+0

어떻게 디코딩하나요? –

0

당신은 당신이 정보에 대한 어떤 FQL을 호출 할 필요는 없다 점점.iframe이 들어 그냥 객체를 생성 그래프 API를 https://github.com/facebook/php-sdk/

  • 의 PHP SDK를 다운로드하고 사용자

    $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 '</pre>'; 
    } 
    // Create our Application instance. 
    $facebook = new Facebook(array(
        'appId' => $fbconfig['appid'], 
        'secret' => $fbconfig['secret'], 
        'cookie' => true, 
    )); 
    // User location extended permission allow you to get user's current location 
    $loginparams = array('canvas' => 1,'fbconnect' => 0,'req_perms' => 'user_location'); 
    
    $loginUrl = $facebook->getLoginUrl($loginparams); 
    
    
    // We may or may not have this data based on a $_GET or $_COOKIE based session. 
    // If we get a session here, it means we found a correctly signed session using 
    // the Application Secret only Facebook and the Application know. We dont know 
    // if it is still valid until we make an API call using the session. A session 
    // can become invalid if it has already expired (should not be getting the 
    // session back in this case) or if the user logged out of Facebook. 
    $session = $facebook->getSession(); 
    
    $fbme = null; 
    // Session based graph API call. 
    if ($session) { 
        try { 
        $uid = $facebook->getUser(); 
        $fbme = $facebook->api('/me'); 
        } catch (FacebookApiException $e) { 
         d($e); 
        } 
    } 
    
    function d($d){ 
        echo '<pre>'; 
        print_r($d); 
        echo '</pre>'; 
    } 
    

    에서 응용 프로그램을 승인 단계

    1. 다음을 수행해야합니다 // 당신은 발견 할 수 있습니다 이 배열의 모든 데이터 print_r ($ fbme); 이 튜토리얼 http://thinkdiff.net/facebook/php-sdk-graph-api-base-facebook-connect-tutorial/

      을 따를 수 있습니다 자세한 내용 들어

    당신이

  • +0

    자세한 답변 주셔서 감사합니다.하지만 Preload FQL 결과를 가져 오는 방법에 관심이 있습니다. 제안하는 방법은 이미 내 사이트에서 작동하지만 $ cbook ($ facebook-> api ('/ me')가 호출 될 때) 적어도 하나의 CURL 호출이 필요합니다 .- 나는 그것을 피하고 싶습니다. –

    관련 문제