2012-01-17 54 views
0

我有这样的代码:Facebook的权限请求,无尽的重定向循环

require 'facebook.php'; 

$facebook = new Facebook(array(
'appId' => 'xxxxxxx', 
'secret' => 'yyyyyyy', 
'baseUrl' => 'http://xxx.yyy.zz/', 
'appBaseUrl' => 'http://apps.facebook.com/xxxxxx/', 
'fileUpload' => 'true', 
)); 

$user = $facebook->getUser(); 

$params = array(
    scope => 'publish_stream,user_photos', 
    redirect_uri => 'http://www.facebook.com/xxxxxx?sk=app_123456789' 
    ); 

if ($user){ 
    .... 
} 

$loginUrl = $facebook->getLoginUrl($params); 

if ($user){ 
// nothing 
}else{ 
    echo "<script type=\"text/javascript\">top.location.href = \"".$loginUrl."\";</script>"; 
} 

我的问题是,它进入一个无限循环......遍地重新加载页面。 有人可以帮我解决这个问题吗?

非常感谢!

回答

0

问题是主逻辑不是int index.php。在我把所有东西都放回去之后,重定向就停止了。

0

我认为问题是您的redirect_uri。尝试定义到你的url(www.yourdomain.com/app/index.php)的真实路径,因为Facebook将发送一个POST(包括一个代码)到该网址,并不会将其与应用程序数据或签名请求您的iFrame应用程序。

+0

但是,如果我将其更改为APP的托管网址,它将离开Facebook页面,在其中嵌入(iFrame) – VORiAND

+0

,然后尝试用'document.location.href'替换'top.location.href',或者将您的redirect_uri设置为您服务器上的单个脚本页面(使用fb sdk初始化,例如http://yourdomain.com/fb_auth.php)并重定向到您的标签url。那么用户应该被认证。 –

+0

没有变化:(试过了,redirect_uri是一个包含JS重定向的.php(包含facebook数组),但它仍然进入重载循环:(我不明白这是什么问题.... – VORiAND