2011-02-13 103 views
2

我想在我的網站上實現Facebook連接。我已經使用oauth api獲取應用程序的權限請求。使用Facebook連接登錄連接問題

但是,我有以下問題。

如果用戶第一次使用臉書連接登錄我的網站,我需要爲他(在我的網站上)創建一個新的用戶名/密碼,以便能夠瀏覽我的網站並設置所有會話變量。但是,我應該使用什麼作爲用戶名/密碼? 據我所知,Facebook用戶可以更改他的電子郵件地址。

我如何處理使用Facebook連接第二次或第三次登錄的用戶(誰已經是我的網站的成員)?我不需要在我的網站上爲他們創建一個用戶,因爲他第一次登錄時已經創建了它。我是否檢查電子郵件地址以查看數據庫中是否存在Facebook用戶的電子郵件地址?此外,來自Facebook用戶可以更改其電子郵件地址的相同問題。

對於我可以使用他的用戶名的Facebook用戶不會改變的一件事是什麼?另外,我使用什麼密碼?此外,我明白,如果我使用可用的應用程序數據的用戶名/密碼,然後使用正常的機制,用戶也可以登錄到我的網站。我如何防止這個安全漏洞?

請幫忙。

回答

3

我用的信息,Facebook的回調發送(Facebook的唯一用戶ID或正常的ID),然後檢查用戶是否在我的數據庫,如果不是我插入他,但我留下空白的行吟詩人rstuff如密碼或用戶電子郵件(也可以請求該信息,檢查php api中的第418行,並添加''req_perms'=>'email',「),因爲我可以在再次連接時檢索數據,然後設置會話類似allways。 如果用戶更改電子郵件只需檢查每次登錄並更新數據。 例如:

$facebook = new Facebook(array(
     'appId' => 'xxxxxxxxx', 
     'secret' => 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx', 
     'cookie' => true, 
    )); 
    $session = $facebook->getSession(); 

    $me = null; 
    // Session based API call. 
    if ($session) { 
     try { 
     $uid = $facebook->getUser(); 
     $me = $facebook->api('/me'); 

     } catch (FacebookApiException $e) { 
     error_log($e); 
     } 
    } 


    // login or logout url will be needed depending on current user state. 
    if ($me) { 
     $logoutUrl = $facebook->getLogoutUrl(); 

    } else { 
     $loginUrl = $facebook->getLoginUrl(); 
    } 
    if ($me) { 

    if (!isset($_SESSION["usr_id"])){ 
    $_SESSION["usr_id"] =$me['id']; 
     $_SESSION["usr_name"]=$me['name']; 

// or do your sql verification and then set the sessions 

     } 
    } 
    ///////////////////////////////////////////// 
+0

非常感謝。你的回答確實有幫助。我幾乎放棄了這一點。 :) – 2011-02-26 14:43:14

0

Facebook提供用戶的唯一ID。您可以通過此信息識別用戶。