应用程序身份验证陷入无限重定向循环

时间:2012-02-17 11:39:44

标签: facebook authentication loops

我的应用程序陷入无限重定向循环,因为$ facebook-> getUser();总是返回0.我已经阅读了stackoverflow和其他网站上的许多线程以及类似的问题,但到目前为止还没有找到解决方案。我使用以下代码进行身份验证:

//
$facebook = new Facebook(array(
  'appId'  => APP_ID,
  'secret' => APP_SECRET,
  'cookie' => true,
));

// Get User ID
$user = $facebook->getUser();
if ($user) {
  try {
    // Proceed knowing you have a logged in user who's authenticated.
    $user_profile = $facebook->api('/me');
  } catch (FacebookApiException $e) {
    error_log($e);
    $user = null;
  }
}

// Login or logout url will be needed depending on current user state.
if ($user) {
  $logoutUrl = $facebook->getLogoutUrl();
} else {
  $loginUrl = $facebook->getLoginUrl(
    array (
      "scope" => "user_likes,email,user_hometown,publish_stream",
      "redirect_uri" => "https://www.facebook.com/pages/erdekelnehu/268142359907805?sk=app_175080802604575"
      ));
  die ('<script type="text/javascript">top.location.href="' . $loginUrl . '";</script>');
}

经过一些调试后,我发现从oauth对话框重定向,我的应用程序没有signed_request。 $ _GET,$ _POST和$ _REQUEST都是空数组。 $ facebook-&gt; getLoginUrl返回以下Url: https://www.facebook.com/dialog/oauth?client_id=175080802604575&redirect_uri=https%3A%2F%2Fwww.facebook.com%2Fpages%2Ferdekelnehu%2F268142359907805%3Fsk%3Dapp_175080802604575&state=3c0d5802c89e913368ea814d49792454&scope=user_likes%2Cemail%2Cuser_hometown%2Cpublish_stream

我尝试在没有redirect_uri参数的情况下调用$ facebook-&gt; getLoginUrl,将其留给fb以找出正确的返回网址: https://www.facebook.com/dialog/oauth?client_id=175080802604575&redirect_uri=https%3A%2F%2Ferdekelne.hu%2Fdroidtv%2F&state=3c0d5802c89e913368ea814d49792454&scope=user_likes%2Cemail%2Cuser_hometown%2Cpublish_stream

两个网址不一样,也没有一个工作。第二个网址重定向到fb错误页面,说明发生了一些错误,“我们正在努力尽快修复此问题。” 那么它可能是一个fb bug,还是我做错了什么?任何想法都会受到赞赏,因为经过6个小时的调试后,我已经完全耗尽了它们。

1 个答案:

答案 0 :(得分:0)

刚出现类似的问题,通过将目录名称(放置应用程序)中的空格更新为URL兼容的字符即%20来解决此问题。它就像一个魅力。