我正在使用Facebook来管理我网站的登录信息。我还使用PHP SDK调用Graph API来检索朋友列表,评论,帖子等。
我遇到的问题是我希望该网站是独立的,以便用户关注来自Facebook的链接,然后访问该网站。
它有点工作,但有时当用户关注链接时,他们会在Facebook画布区域中看到我网站的索引页面。我没有完全设法重现这一点,所以没有确定它发生的情况。但是,当它发生时,如果我在浏览器中单击“返回”,我将被带回我自己的网站。
看起来该链接将用户从Facebook带到我的网站,然后该网站呼叫Facebook检查用户是否已登录,但由于某种原因它不会返回我的网站。但正如我所说,我不确定。
无论如何,任何人都有任何想法可能是什么问题?
我的登录代码是:
// Create new Facebook object
$facebook = new Facebook(array(
'appId' => APP_ID,
'secret' => APP_SECRET,
'cookie' => true, // enable optional cookie support
));
// Create login url, in case user is not logged in or session has expired
$loginUrl = $facebook->getLoginUrl($params = array('canvas' => 0, 'fbconnect' => 0, 'req_perms' => 'publish_stream', 'cancel_url' => 'http://www.pubfish.com'));
// Get current facebook session
$session = $facebook->getSession();
$me = null;
// Session based API call.
if ($session) { // If session exists, make sure it's still valid
try { // Get session to see whether it's valid
// User is logged in and has authorised application already
$uid = $facebook->getUser();
$me = $facebook->api('/me');
} catch (FacebookApiException $e) {
echo "<script type='text/javascript'>top.location.href = '".$loginUrl."';</script>";
error_log($e);
}
}else { // No session - so ask user to log in
$url=$facebook->getLoginUrl(array('canvas' => 1,'fbconnect' => 0));
echo ('<script type="text/javascript">top.location.href=\''.$url.'\';</script>');
}
答案 0 :(得分:1)
您是否尝试过设置'next',如下所示:$ params = array('canvas'=&gt; 0,'fbconnect'=&gt; 0,'req_perms'=&gt;'publish_stream','cancel_url'=&gt ;'http://www.pubfish.com','next'=&gt;'http://www.pubfish.com')?如果所有其他方法都失败了,你可以使用它来突破画布iframe:
<script>
$(document).ready (function () {
if (window != top) top.location.href = location.href;
});
</script>