我有这个简单的代码:
// 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"));
}
并且join.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)时,应用程序会显示auth对话框(正确)但在此步骤之后它会从索引执行无限循环.php 到 join.php 。
正如您所看到的,当我检查join.php中是否有任何错误时,我会重定向到index.php(应用程序的主页)但是在index.php中我仍然得到$user === 0
所以它将另一个时间重定向到join.php ....等等(无限循环)。
我该如何解决这类问题?
非常感谢!
修改 我使用 join.php 作为登录页面的回调(redirect_uri)。此页面的目的是在数据库中保存有关用户的信息,因此join.php将执行此操作,然后重定向到index.php以允许用户使用该应用程序。错?
答案 0 :(得分:0)
您需要致电$facebook->getUser()
以实际处理回调数据,以便在join.php
中找到访问令牌。