2011-08-05 32 views
6

我是PHP新手,並且很難理解Facebook登錄系統。結合facebook登錄,使用facebook php-sdk(v.3.0.0),使用會話和cookies

我已經從github下載了三個src /文件(https://github.com/facebook/php-sdk/)。我嘗試使用example.php文件讓我開始。不過,我不知道該怎麼辦。

對於那些誰不熟悉的文件,這裏是使用example.php的一個副本,其中的一些造型刪除:

require '../src/facebook.php'; 
$facebook = new Facebook(array(
    'appId' => '...', 
    'secret' => '...', 
)); 
$user = $facebook->getUser(); 
if ($user) { 
    try { 
    $user_profile = $facebook->api('/me'); 
    } catch (FacebookApiException $e) { 
    error_log($e); 
    $user = null; 
    } 
} 
if ($user) { 
    $logoutUrl = $facebook->getLogoutUrl(); 
} else { 
    $loginUrl = $facebook->getLoginUrl(); 
} 
$naitik = $facebook->api('/naitik'); 
?> 
<!doctype html> 
<html xmlns:fb="http://www.facebook.com/2008/fbml"> 
    <body> 
    <?php if ($user): ?> 
     <a href="<?php echo $logoutUrl; ?>">Logout</a> 
    <?php else: ?> 
     <div> 
     Login using OAuth 2.0 handled by the PHP SDK: 
     <a href="<?php echo $loginUrl; ?>">Login with Facebook</a> 
     </div> 
    <?php endif ?> 

    <h3>PHP Session</h3> 
    <pre><?php print_r($_SESSION); ?></pre> 

    <?php if ($user): ?> 
     <h3>You</h3> 
     <img src="https://graph.facebook.com/<?php echo $user; ?>/picture"> 

     <h3>Your User Object (/me)</h3> 
     <pre><?php print_r($user_profile); ?></pre> 
    <?php else: ?> 
     <strong><em>You are not Connected.</em></strong> 
    <?php endif ?> 

    <h3>Public profile of Naitik</h3> 
    <img src="https://graph.facebook.com/naitik/picture"> 
    <?php echo $naitik['name']; ?> 
    </body> 
</html> 

下面是它我有問題的方面:

1)cookies怎麼樣? - 我想讓用戶在重新打開他/她的瀏覽器後能夠登錄到我的網站。

2)什麼是我需要擺脫這個example.php文件來驗證/註冊用戶,開始一個會話,將會話存儲在cookie中,獲取用戶的fb用戶ID,fb名稱, fb圖片和fb朋友列表?

3)在src /文件中,有一個'file fb_ca_chain_bundle.crt',我完全不熟悉這樣的文件,我不知道它是否是必要的。它的目的是什麼?

4)行$naitik = $facebook->api('/naitik');是「naitik」這個人的用戶名 - 所以如果我輸入facebook.com/naitik它會顯示他的公開個人資料?用「/ me」取代「/ naitik」什麼會得到登錄Facebook的人的公開個人資料?

5)如何獲取訪問令牌,以及如何在代碼中使用它?

6)當我爲用戶和一個cookie創建一個會話以便用戶在重新打開瀏覽器後登錄時,我應該在會話和Cookie中存儲哪些內容?

我知道這是很多問題,但我已經瀏覽了很多在線的教程,並且他們都沒有很好地解釋這一點,主要是因爲他們只是鏈接回Github PHP-SDK文件。另外,其中大多數解釋了PHP-SDK的先前版本。 任何幫助表示讚賞,任何問題。

+0

[Thinkdiff](http://thinkdiff.net/)有關於這個主題的一些或多或少的最新教程。 –

回答

7

要回答您的問題

1)什麼是餅乾?

您只需在Facebook初始化中添加一個參數即可。 它更改爲以下

$facebook = new Facebook(array(
    'appId' => '...', 
    'secret' => '...', 
    'cookie' => true, 
)); 

2)什麼是最低限度的,我需要擺脫這種使用example.php文件來....

不是你想要的一切是在這個例子中。代碼的上半部分向您展示瞭如何連接和驗證用戶。下半場只是拋出了他們的基本細節和naitik的細節。其餘的你需要進一步觀察。

3)在src /文件,有一個「文件fb_ca_chain_bundle.crt,」

這個文件的目的是要提供CURL錯誤60一種解決方法。閱讀此:

http://www.takwing.idv.hk/blog/2011/php-sdk-demystified-%E2%80%93-how-curl-error-60-is-handled/

4)線$ naitik = $ facebook-> API( '/ naitik');是「naitik」這個人的用戶名 - 所以如果我輸入facebook.com/naitik,它會顯示他的公開個人資料?用「/ me」取代「/ naitik」什麼會得到登錄Facebook的人的公開個人資料?

完全正確

5)如何獲得訪問令牌,以及如何使用它在我的代碼?

$ facebook-> getAccessToken();

您添加了一些方法調用,但它不是必需的。

6)當我爲用戶和一個cookie創建一個會話以便用戶在重新打開瀏覽器後登錄時,我應該在會話和Cookie中存儲哪些內容?

Facebook的SDK會照顧到這一點。您只需存儲關於您的應用所需用戶的額外信息。

+0

很棒的回答。任何想法如何自動登錄用戶?這對Facebook應用程序很有用。 –

+0

facebook文檔建議將訪問令牌發佈到「https://graph.facebook.com/oauth/access_token?」 。 「client_id =」。 $ app_id。 「&redirect_uri =」。 urlencode($ my_url) 。 「&client_secret =」。 $ app_secret。 「&code =」。 $代碼;因此,不確定您在5中建議的上述呼叫是否是推薦的呼叫。 – pal4life