使用Heroku URL作为Canvas URL的凭据无效

时间:2011-10-21 18:30:04

标签: php redirect heroku facebook-canvas

我正在使用Heroku在Facebook上创建一个php应用程序。我想让Heroku URL成为我的应用程序中的Canvas URL。但是,当我将URL放在Basic页面中,然后尝试通过转到http://apps.facebook.com/status_related_test打开我的应用程序时,画布显示“Invalid credentials”并重定向到应用程序的URL https://young-warrior-3712.herokuapp.com。< / p>

任何想法我可能做错了或如何解决这个问题?

ETA:
当我直接进入应用程序链接(https://young-warrior-3712.herokuapp.com)时,我可以成功登录。只有当我尝试访问Facebook App页面时,它才会起作用。

4 个答案:

答案 0 :(得分:4)

norabora,我在其他帖子中得到了解决方案,经过长时间的努力我终于成功了!这是我回答的帖子的链接: Answer to redirection in FB app canvas

希望你会觉得它很有用...... 祝你好运!

答案 1 :(得分:0)

我自己试过,index.php在页面加载时无法在第35行获取$ token。

$token = FBUtils::login(AppInfo::getHome());
if ($token) {
...
} else {
  // Stop running if we did not get a valid response from logging in
  exit("Invalid credentials");
}

使用http://developers.facebook.com/docs/authentication/中的过程确定FBUtils :: login失败的原因。

或者,您可能希望使用已经具有“Facebook :: getLoginUrl”等功能的Facebook PHP SDK(http://developers.facebook.com/docs/reference/php/)并绕过此错误。

答案 2 :(得分:0)

转到AppInfo.php中的getHome()函数,找到以下行:

return ($_SERVER['HTTP_X_FORWARDED_PROTO'] ?: "http") . "://" . $_SERVER['HTTP_HOST'] . "/"; 

您必须将$_SERVER['HTTP_HOST']更改为画布页网址:

return ($_SERVER['HTTP_X_FORWARDED_PROTO'] ?: "http") . "://" . "apps.facebook.com/yourappname"  . "/"; 

其中yourappname应该是您的应用名称空间。

请注意,如果您应用这些更改,您将无法使用应用程序的heroku页面,因为它将重定向到画布页面。

答案 3 :(得分:0)

我在尝试将我的应用程序包含在Facebook的页面标签中时遇到了类似的问题。该问题的答案是编辑FBUtils.php。

查找

      echo("<script> window.location.href='" . $authorize_url . "'</script>");

替换为:

echo("<script> window.location.href='" . $authorize_url . "'</script>");

此行可在FBUtils.php的第94行找到