0

这个想法是,如果user_id存在 a ,则将用户重定向到https://www.example.com/XYZ/。如果没有,请致电getLoginUrl获得第user_id一个。问题是我无法得到任何user_id. 因此,脚本继续执行getLoginUrl导致 CSRF 错误发生(我得到多个状态值)。这个问题是非常随机的。

有任何想法吗?

require_once('../src/facebook.php');
require_once ('../src/fbconfig.php');

$user_id = $facebook->getUser();
if (!$user_id) {
    $loginUrl   = $facebook->getLoginUrl(array(
      'scope'         => 'publish_stream, user_likes')
    );
    echo "<script type='text/javascript'>top.location.href = '$loginUrl';</script>";
} else {
    echo "<script>top.location.href = 'https://www.example.com/XYZ/'</script>";
    exit;
}
4

1 回答 1

0

尝试:

print_r($user_id);

在您设置 $user_id 并继续尝试直到找到其中一个“随机”案例并观察它返回的内容之后。然后,您需要在 if/then 语句中添加其他条件来处理意外返回,或者可能执行重试 [当然要限制以防止竞争条件]。

此外,根据服务器和魔术引号设置,您可能希望将第一种情况下的重定向代码更改为以下内容:

echo "<script type='text/javascript'>top.location.href = '" . $loginUrl . "';</script>";

我怀疑这与它有什么关系,或者你会在 URL 中看到它,但很难说出你的应用程序发生了什么,而且“随机”总是很痛苦。尝试找出在那些“随机”情况下返回的内容,这应该告诉您如何处理它。

于 2012-07-15T17:10:53.807 回答