【问题标题】:Facebook-connect gives a redirect loopFacebook-connect 提供重定向循环
【发布时间】:2012-05-13 16:10:45
【问题描述】:

拜托,我需要帮助。我正在处理这个问题 1 个月!

我想使用 PHP 和 php-sdk 3.1.1 实现 facebook 连接登录到我的网站。简而言之,我的代码离线工作(在本地主机上)但不能在线工作,这导致“重定向循环过多(在 Chrome 上)”:错误 310(net::ERR_TOO_MANY_REDIRECTS):重定向过多。

这是我的代码:

1/ 我加载 facebook connect SDK 并初始化它:

    require 'src/facebook.php';
    $facebook = new Facebook(array(
        'appId'  => '209633612480053',
        'secret' => 'xxxxxxxxxxxxxxxxxxxxxxxxxxxx'
    ));

请注意,我在 facebook-developper 页面上创建了两个应用程序,一个用于离线测试,另一个用于在线测试。而且我肯定在测试时在两对appId/secret(在线和离线)之间正确切换。所以不是facebbok-connect init坏的问题。

2/ 我尝试获取用户信息:

  $uid = $facebook->getUser();

  if($uid)
  {
     /*
      * Get user information.
      */
     $user = $facebook->api('me/');
     print_r($user); // Display user info.
  }
  else
  {
     /*
      * Redirect to FB login URL to allow access.
      */
     $loginURL = $facebook->getLoginURL();
     echo '<script> top.location.href=\''.$loginURL.'\'</script>';
  }

就这么简单:如果用户ic连接到facebook,那么显示它的信息,否则,重定向到facebook登录页面以允许访问。

它可以在离线状态下完美运行,但在在线状态下,我收到 chrome 错误:

This webpage has a redirect loop
The webpage at https://www.facebook.com/dialog/oauth?client_id=209633612480053&redirect_uri=http%3A%2F%2Fwww.bluward.com%2Foauth%2Ffacebook&state=551f60cd4be6cd8ed1622f8168a5219a#_=_ has resulted in too many redirects. Clearing your cookies for this site or allowing third-party cookies may fix the problem. If not, it is possibly a server configuration issue and not a problem with your computer.

一些附加信息:在线,我使用 1and1 主机提供商,并且为了确保与离线服务器(它是 MAMP Pro)具有相同的服务器配置,我上传了 sams php.ini 文件。

如果有人有想法或遇到类似问题,我很乐意提供帮助。

提前感谢您的所有帮助。

更新:

我更新了我的代码以专注于有问题的行,所以我没有重定向到 facebook 登录页面,而是显示了重定向 URL,所以我只需单击即可登录:

  $uid = $facebook->getUser();

  if($uid)
  {
     /*
      * Get user information.
      */
     $user = $facebook->api('me/');
     print_r($user); // Display user info.
  }
  else
  {
     /*
      * Redirect to FB login URL to allow access.
      */
     $loginURL = $facebook->getLoginURL();
     echo $loginURL; // <-- HERE I CHANGED THE CODE TO DISPLAY LOGIN URL
  }

我注意到 facebook 无限重定向到我的脚本页面。仅 URL 栏上的 code 参数发生变化。

那么,为什么 facebbok 在不给我用户信息的情况下重定向到我的脚本页面?

请问有什么办法吗?

【问题讨论】:

  • 您是否在浏览器中启用了cookies?
  • 是的,当然。我使用允许设置本地数据的设置(推荐)。
  • 那么奇怪。在 $loginURL = $facebook->getLoginURL(); 之后放置一个退出如果它仍然重定向,然后更新。
  • 我更新了我的代码。现在我只显示 loginUrl 而不是自动重定向。 $loginURL = $facebook-&gt;getLoginURL(); echo $loginURL; // &lt;-- HERE I CHANGED THE CODE TO DISPLAY LOGIN URL但是还是不行!!!
  • 点赞 $loginURL = $facebook->getLoginURL();退出;

标签: php facebook login


【解决方案1】:

我遇到了这个问题,在我的情况下,我必须从 SDK 编辑 base_facebook.php:

public static $CURL_OPTS = array(
    CURLOPT_CONNECTTIMEOUT => 10,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_TIMEOUT        => 60,
    CURLOPT_USERAGENT      => 'facebook-php-3.2',
    CURLOPT_SSL_VERIFYPEER => false,
    CURLOPT_SSL_VERIFYHOST => false,
);

我手动添加的最后两个选项。

【讨论】:

  • genius 与 aredirect 循环有同样的问题,为我解决了这个问题。
【解决方案2】:

我在使用 chrome 浏览器时遇到了类似的问题,cookie 总是不正确或为空。

然后我从Heroku 下载了一个 facebook 示例(它使用弹出窗口作为登录而不是 js 重定向)并注意到当网站的基本 URL 不是服务器根时它在 chrome 中不起作用网址(例如:localhost/somedirectory/)。 但是在创建了一个虚拟主机之后,它看起来就可以工作了。

您可以在此处https://gist.github.com/2845986 处查看应用程序中的 index.php 示例

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-09-19
    • 1970-01-01
    • 2012-08-25
    • 2012-08-08
    • 1970-01-01
    • 1970-01-01
    • 2019-04-03
    • 2012-01-04
    相关资源
    最近更新 更多