间歇性地无法getUser(),导致多次调用getLoginURL

时间:2012-07-15 16:58:31

标签: php facebook facebook-graph-api

我们的想法是,如果存在user_id,请将用户重定向到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;
}

1 个答案:

答案 0 :(得分:0)

尝试:

print_r($user_id);

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

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

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

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