繁体   English   中英

Facebook授权(oauth)将应用程序重定向到iFrame(在php中)

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM