2012-07-04 48 views
1

我有一個問題,我的遊戲整合到Facebook。在閱讀有關文檔時,我讀到了從Flash中與FB進行通信的最佳和最新方式是通過javascript上的Facebook API。我稱之爲獲取所有ui對話框和基本登錄信息。現在,我的flash遊戲連接到PHP來發送和接收高分像這樣:??在PHP和Facebook API的API訪問_token

scores.php行動= NEWSCORE &用戶id = 123123123 &得分= 100

scores.php行動= VIEW

scores.php?action = VIEWFRIENDS & userId = 123123123

現在,在scores.php中,當我設置VIEWFRIENDS動作時,我想讓php創建facebook查詢。我加入

// Init the Facebook SDK 
$facebook = new Facebook(array(
'appId' => $app_id, 
'secret' => $app_secret, 
)); 

// Get the current user 
$user = $facebook->getUser(); 

$access_token = $facebook->getAccessToken(); 
$fbresponse = $facebook->api("/me/friends?fields=installed", array('access_token'=>$access_token.$access_token,)); 

if ($fbresponse) 
{ 
    $friendsData = $fbresponse['data']; 
    $friendsString = ''; 
    $friendCount = 0; 
    for ($i = 0; $i < sizeof($friendsData); $i++) 
    { 
     $friend = $friendsData[$i]; 

     if ($friend['installed']) 
     { 
      if ($friendCount > 0) 
       $friendsString = $friendsString . ","; 

      $friendsString = $friendsString . "'" . $friend['id'] . "'";     $friendCount++; 
     } 
    } 
    // Get the friends highscores 
    $sql = "SELECT * FROM Highscores WHERE FacebookId IN (" . $friendsString . ") ORDER BY Score DESC LIMIT " . $scoresize ; 
    $result = mysql_query($sql); 
} 

當這樣做,一切似乎如果我測試它的Facebook以外的工作,但是當我把它融入我的應用程序,它會引發以下錯誤:

<br /> 
<b>Fatal error</b>: Uncaught OAuthException: Invalid access token signature. 
    thrown in <b>/home/public_html/mysite.org/games/myGameFacebook/fb-php-sdk/base_facebook.php</b> 

on line 1106

我我試圖檢查發生了什麼,我還沒有找到如何處理它。我明白訪問令牌是由JavaScript代碼登錄時生成的。

getLoginStatus:function() { 
    log("getLoginStatus"); 
    FB.getLoginStatus(function(response) { 
     if (response.status === 'connected') { 

      log("Logged in."); 
      F.token = response.authResponse.accessToken; 
      F.getCurrentUserInfo(); 
     } else if (response.status === 'not_authorized') { 
      log("User did not authorize app"); 
     } else { 
      log("Not logged in."); 
      FB.login(function(response) { 
       if(response.session) { 
        log("Logging successful."); 
        F.token = response.session.access_token; 
        F.getCurrentUserInfo(); 
       } else { 
        log("Logging failed."); 
       } 
      }); 
     } 
    }); 
}, 

我該如何解決這個問題?我一直在努力去理解如何去做,但我已經閱讀了它或者是不可能的,或者鏈接到了一些從未有效的未知會話變量。

回答

0

你與自身串聯訪問令牌在調用$ facebook-> API

array('access_token'=>$access_token.$access_token,) 

應該是這樣的:

array('access_token'=>$access_token,) 

但我猜你應該使用一個應用程序的訪問令牌以檢索您需要的功能,例如:

// Helper function to get an APP ACCESS TOKEN 
function get_app_access_token($app_id, $app_secret) { 
    $token_url = 'https://graph.facebook.com/oauth/access_token?' 
    . 'client_id=' . $app_id 
    . '&client_secret=' . $app_secret 
    . '&grant_type=client_credentials'; 

    $token_response =file_get_contents($token_url); 
    $params = null; 
    parse_str($token_response, $params); 
    return $params['access_token']; 
} 

您需要傳遞應用程序的祕密你可以在Facebook Developer App Page上閱讀。