显示请求权限对话框后,我的Facebook应用程序将不会停留在Facebook上。它一直重定向到redirect_uri(显而易见),但我的问题是如何让应用程序在facebook iframe中运行?
我已尝试将redirect_uri设置为https://apps.facebook.com/myApp,但是不允许它显示错误?
应用程序配置不允许使用URL:应用程序的设置不允许使用一个或多个给定的URL。它必须与网站网址或Canvas网址匹配,或者该网域必须是某个应用网域的子网域。
我目前的代码
<?php
require 'facebook/facebook.php';
// Get User ID
$facebook_config = array(
'appId' => '8**************3',
'secret' => '5*************************d',
'cookie' => true
);
$facebook = new Facebook($facebook_config);
$user = $facebook->getUser();
$login_url = $facebook->getLoginUrl(array(
'redirect_uri' => 'localhost';
'scope' => 'user_location'
));
$logout_url = $facebook->getLogoutUrl();
if($user)
{
$user_profile = $facebook->api('/me');
header("Content-Type:text/plain");
print_R($user_profile);
die();
}
else if(!$user)
{
echo "<script type='text/javascript'>top.location.href = '$login_url';</script>";
}
?>
答案 0 :(得分:0)
您可以删除此行:'redirect_uri' => 'localhost';
因为在登录后如果redirect_uri
中没有提到任何内容,它将自动重定向到同一页面。
如果你想继续浏览其他页面,比如success.php
,你应该给出redirect_uri
wrt画布网址,即这个网页的实际网址,而不是http://apps.facebook。 .....
答案 1 :(得分:0)
感谢您的回答,但当'redirect_uri' => 'localhost';
被删除后,它仍会重定向到localhost并被卡住。
我做了一个快速修复,重定向回Facebook
$token = $_GET['code'];
if ($token) { ?>
<form action="https://apps.facebook.com/MyApp/" method="post" name='frm'>
<input type="hidden" name="token" value="<?=$token?>">
</form>
<script language="JavaScript">
document.frm.submit();
</script>
将所有内容重定向到Facebook并且可以正常工作,但正如您在此处所说的那样
如果你想进入其他页面,比如success.php,你应该给redirect_uri wrt画布网址,即这个页面的实际网址,而不是http://apps.facebook ....... < / p>
我将redirect_uri从localhost
更改为https://apps.facebook.com/MyApp/index.php
,一切顺利,