2011-08-05 35 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