2013-01-15 50 views
1

林在前端使用了Facebook的的JavaScript SDK:Facebook的JavaScript + PHP中,如何確保數據的有效性?

jQuery("#pct_fbbutton").live("click",function(){ 
     FB.getLoginStatus(function(response) { 
     if (response.status === 'connected') { 
      console.log('Conected'); 
      FB.api('/me/likes', function(response) { user_likes = response; 
      FB.api('/me', function(response)  { user  = response; 
       send_server(user, user_likes); 
      }); 
      }); 

     } else if (response.status === 'not_authorized') { 
      console.log('not_authorized'); 
      login(); 
     } else { 
      console.log('not_logged_in'); 
      login(); 
     } 
    }); 
}); 

正如你所看到的,用戶後登錄使用Facebook的病通過AJAX發送兩個對象,一個PHP腳本(使用功能send_server) 。

我可以在後臺使用$ facebook-> getAccessToken()訪問當前生成的標記,但據我所知,這是從javasript sdk製作的cookie取回來的,考慮到所有的前端數據都可以被黑客入侵,令牌如何確保用戶數據在PHP上有效?

回答

0

答案是用PHP代替JavaScript執行圖形調用,特別是如果客戶端腳本的唯一目的是將其發送到服務器;

在服務器上進行數據收集是確保數據沒有被篡改的唯一可行的方法,假設您執行了正確的https證書檢查。

訪問令牌的有效性也很容易,因爲如果提供的access_token值無效,Facebook將返回一個錯誤。

+0

有沒有辦法來檢查access_token是否有效? – DomingoSL

+0

@DomingoSL如果您嘗試使用無效的access_token訪問數據,將會出現錯誤。 –

0

在後端檢索access_token後,嘗試獲取用戶的配置文件。如果獲取成功,則客戶端爲您提供了正確的access_token,您應該保存它。像下面的例子應該工作,但你可以找到更多的例子:

<?php 

$facebook = new Facebook(array(
    'appId' => $initMe["appId"], 
    'secret' => $initMe["appSecret"], 
)); 

$facebook->setAccessToken($initMe["accessToken"]); 
$user = $facebook->getUser(); 

if ($user) { 
    $user_profile = $facebook->api('/me'); 
    print_r($user_profile); 
} 
?>