【发布时间】: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->getLoginURL(); echo $loginURL; // <-- HERE I CHANGED THE CODE TO DISPLAY LOGIN URL但是还是不行!!! -
点赞 $loginURL = $facebook->getLoginURL();退出;