我的Facebook应用程序在授权时被重定向到iFrame。我使用了gitHub中的facebook.php和base_facebook.php而没有任何改动,并且几乎遵循了example.php。我能错过什么?:
$facebook = new Facebook(array(
'appId' => $configParam['appId'],
'secret' => $configParam['secret']
));
$appId=$configParam['appId'];
$user = $facebook->getUser();
if ($user==null) {
$loginUrl = $facebook->getLoginUrl(array(
'scope' => $perm
));
$loginUrl = $facebook->getLoginUrl();
echo "<script type='text/javascript'>top.location.href = '$loginUrl';</script>";
}
loginUrl在base_facebook.php中构造为:
$this->establishCSRFTokenState();
$currentUrl = $this->getCurrentUrl();
return $this->getUrl(
'www',
'dialog/oauth',
array_merge(array(
'client_id' => $this->getAppId(),
'redirect_uri' => $currentUrl, // possibly overwritten
'state' => $this->state),
$params));
答案 0 :(得分:0)
这是你要解决这两个问题的事情的组合: 1. facebook授权将应用程序重定向到iFrame(如ifaour所述) 2. app进入循环 3. app只在IE中进入循环
对于(1),所有内容必须始终为https(或http)。我确实将我的安全画布网址设为https,但将我的画布网址保留为http(我认为这很好)。显然,两者都应该是https
对于(2),GitHub上的OOB facebook-php集成代码使用当前URL作为redirect_uri。您必须将其更改为apps.facebook.com/namespace-请注意,这必须在base_facebook.php中的两个位置完成 - getLoginUrl和getAccessTokenFromCode