0

我有这个简单的代码:

// 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)应用程序显示身份验证对话框(正确)但在这一步之后它会从索引执行无限循环.php加入.php

正如您所看到的,当我检查 join.php 中是否有任何错误时,我重定向到 index.php(应用程序的主页)但在 index.php 中我仍然得到$user === 0,所以它再次重定向到 join.php ....等等等等(无限循环)。

我该如何解决这种问题?

非常感谢!

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

4

1 回答 1

0

您需要调用$facebook->getUser()才能实际处理回调数据以在join.php.

于 2012-05-13T06:41:20.513 回答