我正在使用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页面时,它才会起作用。
答案 0 :(得分:4)
希望你会觉得它很有用...... 祝你好运!
答案 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行找到