Facebook授权期间的无限循环


Infinite loop during Facebook Authorization

我有这个简单的代码:

// index.php
require_once("/fb/facebook.php");
require_once("/config/config.php");
$facebook = new Facebook(array(
    'appId'  => $config['appId'],
    'secret' => $config['secret'],
    'cookie' => true
));
$user = $facebook->getUser();
if ($user === 0) {      
    $loginUrl = $facebook->getLoginUrl(array(
      'redirect_uri' => 'https://www.example.com/join.php'      
    ));
    echo("<script> top.location.href='" . $loginUrl . "'</script>");    
    exit;
}
else {      
    var_dump($facebook->api("/me"));    
}   

连接.php代码为:

//join.php
require_once("/fb/facebook.php");
require_once("/config/config.php");
$facebook = new Facebook(array(
    'appId'  => $config['appId'],
    'secret' => $config['secret'],
    'cookie' => true
));
if (isset($_REQUEST['error'])) {    
    echo("<script>top.location.href='". $config['errors']['auth'] . "'</script>");
    exit;
}
echo("<script>top.location.href='". $config['url'] . "'</script>");

问题是,当我转到:http://apps.facebook.com/myappsample(并且我没有登录Facebook)时,应用程序显示身份验证对话框(正确),但在此步骤之后,它会执行从index.phpjoin.php的无限循环。

正如您在检查 join 中是否有任何错误时所看到的.php我重定向到 index.php(应用程序的主页)但在索引中.php我仍然会得到$user === 0所以它会重定向另一个时间加入.php....等等等等(无限循环)。

如何解决此类问题?

谢谢!

编辑:我使用 join.php 作为登录页面的回调 (redirect_uri)。此页面的目的是在数据库中保存有关用户的信息,因此join.php将执行此操作,然后重定向到index.php以允许用户使用该应用程序。错?

您需要调用$facebook->getUser()才能实际处理回调数据以在join.php中查找访问令牌。