【发布时间】:2012-10-29 09:01:05
【问题描述】:
我的 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));
【问题讨论】:
-
因此,redirect_uri 是当前 URL (www.myserver.com/myapp/index.php)。如果我将redirect_uri 硬编码为apps.facebook.com/myapp,facebook 会抛出一个错误(“redirect_uri 不是绝对URI”)。如果他们的任何基本应用程序设置有缺陷,通常人们会遇到这个问题,但我看不出有什么问题。这是我的基本设置: siteurl: myserver.com/myapp namespace:
//所以我确实设置了命名空间 canvasUrl: myserver.com/myappsecure canvas url: myserver.com/myapp -
p.s:确保将
https协议添加到您的画布网址,因此:https://apps.facebook.com/app_namespace/ -
当我给出redirect_uri(而不是当前url)时,我得到错误:API错误代码:191 API错误描述:指定的URL不属于应用程序错误消息:redirect_uri is' t 绝对 URI。检查 RFC 3986。无论给出 myserver.com/myapp 或 apps.facebook.com/namespace 我使用的是 https,我都会收到此错误
-
当我将画布 URL 更改为 https 时,上述问题就消失了。但是现在应用程序无限循环