Facebook重定向到画布网址而不是Facebook上的应用程序
问题描述:
我编写了一个Facebook应用程序,它可以作为页面上的标签。Facebook重定向到画布网址而不是Facebook上的应用程序
这里是我的config.php文件中包含的配置,如果用户还没有批准的应用程序重定向到认证页面:
<?php
require_once("database.php");
require_once("functions.php");
require_once("facebook.php");
$config = array
(
'database' => array
(
'host' => 'localhost',
'name' => '***',
'username' => '***',
'password' => '***'
)
);
$db = new Database($config['database']['host'], $config['database']['name'], $config['database']['username'], $config['database']['password']);
$db->connect();
$facebook = new Facebook(array(
'appId' => '***',
'secret' => '***',
'cookie' => true
));
$user = $facebook->getUser();
if ($user)
{
try
{
$me = $facebook->api('/me');
} catch (FacebookApiException $e) {
error_log($e);
$user = null;
}
}
if ($user)
$logoutUrl = $facebook->getLogoutUrl();
else
{
$loginUrl = $facebook->getLoginUrl(array(
'scope' => 'email,user_about_me,user_likes,user_status,read_stream,offline_access,publish_stream,publish_actions'
));
}
if (!$user)
{
echo "<script type=\"text/javascript\">top.location.href = '".$loginUrl."';</script>";
}
?>
这里是我的主文件:
<?php
require_once("includes/config.php");
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="he" lang="he" dir="rtl">
<head>
<meta http-equiv="content-type" content="text/html; charset=windows-1255" />
<title>
שער 7 - הלב הצהוב | מכבי תל אביב
</title>
</head>
<body>
<?php
$clLike = $facebook->api('/me/likes/204623816223540');
if (!empty($clLike['data']))
echo "I'm a fan!";
else
echo "I'm not a fan :(";
?>
</body>
</html>
正如我之前提到的,这个应用程序作为一个Facebook页面上的标签,而不是一个独立的Facebook应用程序,因此没有画布网址。页面标签网址是:http://www.gate7.co.il/fbapps/predictor/。
当用户进入选项卡时,他被重定向到认证页面(来自config.php),但是当认证过程完成时,用户被重定向到页面标签url(http:// www。 gate7.co.il/fbapps/predictor/)而不是页面内的标签。
我试图将这些行添加到索引文件:
<script type="text/javascript">
if (top.location.href != "http://www.facebook.com/gate7yellowheart?sk=app_196175180456372")
window.location = "http://www.facebook.com/gate7yellowheart?sk=app_196175180456372";
</script>
它运作良好的Firefox,用户得到了从页面选项卡的URL在页面的实际标签重定向,但在Chrome它只是造成混乱,并显示在标签页面内。
这是什么解决方案?
答
在你getLoginUrl()调用,REDIRECT_URI参数组到您的标签页,像这样:
$loginUrl = $facebook->getLoginUrl(array(
'scope' => 'email,user_about_me,user_likes,user_status,read_stream,offline_access,publish_stream,publish_actions',
'redirect_uri' => 'http://www.facebook.com/gate7yellowheart?sk=app_196175180456372'
));
如果你的应用程序的用户,然后单击从书签应用程序的名称,它会被默认为画布。你有检测画布的任何解决方案,然后强制重定向回AppPageUrl?谢谢 – Enrique
@Chaney Blu:我有同样的问题,但这个解决方案不适合我,我的应用程序是在codeIgniter(PHP Framwork)。当用户第一次运行该应用时,应用会重定向到我的服务器。请帮助我... – Rajnish