0

我的 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));
4

1 回答 1

0

这是您为解决这两个问题而需要注意的事情的组合:1. facebook 授权将应用程序重定向到 iFrame 之外(如 ifaour 所述) 2. 应用程序进入循环 3. 应用程序仅在 IE 中进入循环

对于 (1),所有内容都必须始终为 https(或 http)。我确实将我的安全画布 URL 设为 https,但将我的画布 URL 保留为 http(我认为这很好)。显然,两者都应该是https

对于 (2),GitHub 上的 OOB facebook-php 集成代码使用当前 URL 作为 redirect_uri。您必须将其更改为 apps.facebook.com/namespace - 请注意,这必须在 base_facebook.php 中的两个地方完成 - getLoginUrl 和 getAccessTokenFromCode

对于 (3) 看看为什么我的 FB 应用程序在 IE 中永远循环?

于 2012-10-29T01:01:05.887 回答