使用facebook php-sdk(v.3.0.0)将facebook登录与会话和cookie结合在一起

Mar*_*ina 6 php facebook facebook-php-sdk

我是PHP的新手,并且很难理解facebook登录系统.

我从github(https://github.com/facebook/php-sdk/)下载了三个src /文件.我尝试使用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>
Run Code Online (Sandbox Code Playgroud)

以下是我对此提出的问题:

1)饼干怎么样? - 我希望用户能够在重新打开浏览器后登录我的网站.

2)我需要离开这个example.php文件以确认/注册用户,开始会话,将会话存储在cookie中,获取用户的fb用户ID,fb名称,fb图片和fb好友列表?

3)在src/files中,有一个'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.如有任何问题,欢迎任何帮助.

Joh*_*ins 7

回答你的问题

1)饼干怎么样?

您只需在Facebook初始化中添加一个参数即可.将其更改为以下内容

$facebook = new Facebook(array(
  'appId'  => '...',
  'secret' => '...',
  'cookie' => true,
));
Run Code Online (Sandbox Code Playgroud)

2)我需要从这个example.php文件中删除最少的内容是什么....

在这个例子中,并非你想要的一切.代码的上半部分显示了如何连接和验证用户.下半场只是抛弃了他们的基本细节和naitik的细节.其余的你需要进一步了解.

3)在src/files中,有一个'file 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将会解决这个问题.您只需要存储有关您的应用程序所需用户的任何额外信息.