2013-10-23 82 views
0
FB.Event.subscribe('auth.authResponseChange', function(response) { 
    if (response.status === 'connected') { 
     FB.api('/me', function(response) { 
      switchTo('loggedin'); 
      // connected & ok 
     }); 
    } 
    else if (response.status === 'not_authorized') { 
     switchTo('loggedout'); 
     // connected but not ok 

     FB.login(); 
    } 
    else 
    { 
     switchTo('loggedout'); 
     // not connected 

     FB.login(); 
    } 
}); 

因此,這裏是一個通用的facebook javascript登錄函數。 如果用戶連接&驗證我發送ajax請求到fb.api('/me')的包含給定ID的服務器。但任何人都可以改變代碼,編輯代碼的方式是他們可以使用別名ID並將其發送到服務器。FB登錄API - 檢查用戶是否真的是用戶

如何驗證通過javascript登錄的用戶是實際用戶,而不僅僅是修改代碼的人?

+0

打電話給'/ me'服務器端。 – CBroe

回答

1

一個很安全的方法是使用PHP SDK:https://github.com/facebook/facebook-php-sdk

看「用法」:

require 'facebook-php-sdk/src/facebook.php'; 

$facebook = new Facebook(array(
    'appId' => 'YOUR_APP_ID', 
    'secret' => 'YOUR_APP_SECRET', 
)); 

// Get User ID 
$user = $facebook->getUser(); 
if ($user) { 
    //user is logged in 
} else { 
    //user is not logged in 
} 

例如,您可以在使用JS SDK登錄後進行頁面重新加載,並在加載頁面之前使用PHP SDK進行檢查。

+0

這是一種「非常安全」的方式還是一種「安全」的方式?是什麼使它「非常」安全,我如何才能提高安全性? – Thew

+0

「secure」;) - 特別是因爲它全部在php中。 – luschn

+0

好的,謝謝! ;) – Thew

0

好吧,你正在使用PHP 作爲後端語言

我建議發送用戶ID旁邊,您可以發送ID散有一些特殊的鹽鹹它並沒有在你的Java腳本只顯示在你的PHP代碼

爲例

var url = "www.example.com/?id=SOME_ID&secret=<?php echo md5(SOME_ID.SECRET)"; 

和後端

$secret = $_GET['secret']; 
$id = $_GET['id']; 
if (md5($id.SECRET) == $secret){ 
    //User is ok here 
}else{ 
    //Some one missing around 
} 

該代碼可用於顯示了這個念頭不是一個完整的代碼使用

+0

發送祕密通過得到是一個非常糟糕的主意...... – luschn

+0

這是散列的祕密不是一個普通的祕密代碼,如授權採取的,用於網絡 –

+0

啊,好吧,它只是一個普通的md5字符串。不過,MD5並不安全,客戶的祕密從哪裏來? – luschn