我遇到的问题是,当用户第一次登录此facebook iframe应用程序时,他会被发送到带有facebook徽标的空白页面。 Followin是屏幕截图。
以下是我的代码,我正在使用新的PHP Sdk:
$facebook = new Facebook(array(
'appId' => 'xxxxxxxxx',
'secret' => 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
'cookie' => true,
));
$this->facebook=$facebook;
$this->session = $facebook->getSession();
$this->me = null;
// Session based API call.
if(!$this->session){
if (!$this->session) {
//echo $loginUrl = $facebook->getLoginUrl($par);
$loginUrl = $facebook->getLoginUrl(
array(
'canvas' => 1,
'fbconnect' => 0,
'display' => 'page',
'req_perms' => 'email,publish_stream,status_update,user_birthday,user_location,user_work_history'
));
$this->request->redirect($loginUrl);
}
}
if ($this->session) {
try {
$this->uid = $facebook->getUser();
$this->user = $facebook->api('/me');
} catch (FacebookApiException $e) {
error_log($e);
}
}
答案 0 :(得分:1)
不要重定向到loginUrl,你实际上在做的是让你的iframe转到facebook页面,在facebook的iframe中生成facebook。和Facebook不会显示在iframe内。所以auth页面没有显示。
您需要进行顶级重定向。基本上重定向整个页面,而不仅仅是你的iframe。从iframe内部进行顶级重定向的一种方法是显示以下javascript:
<html><head>
<script type="text/javascript">
window.top.location.href = "<your redirect url here>";
</script>
<noscript>
<meta http-equiv="refresh" content="0;url=<your redirect url here>" />
<meta http-equiv="window-target" content="_top" />
</noscript>
</head></html>