Php facebook登录不';托住

Php facebook登录不';托住,php,facebook-php-sdk,facebook-login,Php,Facebook Php Sdk,Facebook Login,我终于可以登录facebook了,这样我就可以从用户那里检索信息了 <?php session_start(); require_once 'facebook.php'; $facebook = new Facebook(array( 'appId' => '19582352346693', 'secret' => '44c21dde8d502ega23g287a751dea', 'cookie' =

我终于可以登录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>
然后我把它放进:

这表示访问令牌在一小时内有效


我做错了什么?

首先,你的语法太混乱了。 我想你忘了用sesion\u start了

<?php session_start() ?>


或者检查cookies。

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

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

嘿,谢谢。我已经有了,但是谢谢你指出:)嘿。谢谢你的回答。我一直很难让会话正常工作,但我会尝试更多。许多用户将同时使用该应用程序,因此我很难弄清楚如何使其与数据库或txt一起工作。由于令牌的有效期为1小时,会话应该适合存储令牌。调用
session_start()在任何其他代码之前,并使用
$\u SESSION['token']=$facebook->getAccessToken()赋值。在发出fb请求之前,检查
$\u会话['token']
是否包含值;如果是,请设置此值,否则您可以直接重定向到登录页面。
$access_token = $facebook->getAccessToken();
<?php session_start() ?>