[英]Facebook authorization (oauth) redirecting app out of iFrame (in php)
授权后,我的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));
解决这两个问题是您需要处理的事情的组合:1. Facebook授权将应用程序重定向到iFrame(如ifaour所述)2.应用程序进入循环3.应用程序仅在IE中进入循环
对于(1),所有内容必须始终为https(或http)。 我确实将安全的画布URL设置为https,但将画布的URL保留为http(我认为这很好)。 显然,两者都应为https
对于(2),GitHub上的OOB facebook-php集成代码使用Current URL作为redirect_uri。 您必须将其更改为apps.facebook.com/namespace-注意,这必须在base_facebook.php中的两个位置完成-getLoginUrl和getAccessTokenFromCode
对于(3),请查看为什么我的FB应用程序在IE中永远循环?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.