0

我终于让我的 facebook 登录工作正常了,所以我可以从用户那里检索信息

<?php
    session_start();

    require_once 'facebook.php';

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

    $user_id = $facebook->getUser();

?>

<html xmlns:fb="http://www.facebook.com/2008/fbml">

<head>

<title>Picture</title>

</head>

<body>

<?php 

if($user_id) {

  // We have a user ID, so probably a logged in user.
  // If not, we'll get an exception, which we handle below.
  try {
    $test = null;
    $user_profile = $facebook->api('/me','GET');
    //$test = $user_profile['id'];
    echo "id: " . $user_profile['id'];

  } catch(FacebookApiException $e) {
    // If the user is logged out, you can have a 
    // user ID even though the access token is invalid.
    // In this case, we'll get an exception, so we'll
    // just ask the user to login again here.
    $login_url = $facebook->getLoginUrl(); 
    echo 'Please <a href="' . $login_url . '">login.</a>';
    error_log($e->getType());
    error_log($e->getMessage());
  }   
} else {

  // No user, print a link for the user to login
  $login_url = $facebook->getLoginUrl();
  echo 'Please <a href="' . $login_url . '">login.</a>';

}

?>

</div> 

</body>

</html>

所有这些代码都会给我一个登录名,因为我没有登录到 APP(已验证)。当我按下按钮时,我可以看到我的信息,因为我回应了它。

然后当我按下页面上的另一个按钮时:

<form action="<?php echo 'single_picture.php?argument=' . $picture_id ?>" method="post">
<input type="submit" name="submit" value="Vote!">
</form>

我再次打开同一页面,但登录按钮再次出现,忘记了我正在登录的所有信息。

我以为 if / else 正在检查我是否正在登录。

我还尝试打印出我的访问令牌

$access_token = $facebook->getAccessToken();

然后我把它放到:http: //developers.facebook.com/tools/debug

这表示访问令牌有效期为一小时

我究竟做错了什么?

4

3 回答 3

1

您需要将从 facebook 获得的访问令牌存储到某个地方。无论是会话、数据库表还是简单的文本文件。在 neyt 请求之前,您设置此令牌 ( $facebook->setAccessToken($saved_access_token);),只要它仍然有效。

于 2012-10-09T12:37:38.443 回答
0

好吧,首先你的语法太混乱了。我想你忘了使用 session_start

<?php session_start() ?>

或检查 cookie。

于 2012-10-09T12:35:14.770 回答
0

我知道这不是你想要的,你给了我你的问题,我给你一个不同的答案,但请将此作为建议。使用 Facebook 登录时我所做的是创建自己的登录系统,对于 Facebook 用户,我有另一个存储用户 Facebook id 的表,然后我只使用 Facebook API 来检查我的数据库是否该信息有效。如果是,那么我将用户登录。如果不是,那么我将它们发送到错误页面或注册页面。

于 2013-09-19T05:07:27.873 回答