2010-11-10 90 views
2

我在授权后将用户重定向回Facebook页面中的应用程序选项卡时遇到问题。我总是以独立的应用程序画布页面结束。Facebook授权后的iframe应用程序重定向到Facebook页面标签

编辑: 这本来是个FB页面内标签 的应用程序。我想要执行 授权,然后将 用户重定向到页面选项卡。但是当你做 这个标签看起来就像之前 ,它似乎像用户一样错误 ,因为他来自授权和 在选项卡中的应用程序看起来是相同的。他有 点击它可以获得某种 响应或消息。

是否有任何示例可以下载或某种分步教程。这里是我的代码:

// Create our Application instance. 
$facebook = new Facebook(array(
    'appId' => $fbconfig['appid'], 
    'secret' => $fbconfig['secret'], 
    'cookie' => true, 
)); 

//Facebook Authentication part 
$session = $facebook->getSession(); 
$loginUrl = $facebook->getLoginUrl(
     array(
     'canvas' => 1, 
     'fbconnect' => 0, 
     ) 
); 

$uid = null; //facebook user id 
$fbme = null; 

if (!$session) { 
    echo "<script type='text/javascript'>top.location.href = '$loginUrl';</script>"; 
    exit; 
} 
else { 
    try { 
     $uid = $facebook->getUser(); 
     $fbme = $facebook->api('/me?fields[]=id&fields[]=last_name&fields[]=first_name'); 
    } 
    catch (FacebookApiException $e) { 
     echo "<script type='text/javascript'>top.location.href = '$loginUrl';</script>"; 
     exit; 
    } 
} 
+0

您使用的是什么_Facebook_类?为什么当PHP可以做到这一点时使用JS重定向? http://www.php.net/manual/en/function.header.php – Shikiryu 2010-11-10 09:49:07

+0

我正在使用PHP-SDK。 JS重定向在那里,因为这全部在Facebook页面内的Iframe中。 – vlgalik 2011-01-24 12:49:48

回答

3

没关系我在页面选项卡中使用Ajax进行了授权。该方法也在“Facebook fan page tab and user id.”中描述:

<div id="intro"> 
    <a onclick="load_iframe();"><img src="<?php echo $fbconfig['baseUrl'], 'intro.jpg' ?>" /></a> 
</div> 
<div id="fb-root"></div> 

<script type="text/javascript" charset="utf-8"> 

    function load_iframe() 
    { 
     var intro = document.getElementById('intro'); 
     var root = document.getElementById('fb-root'); 

     var ajax = new Ajax(); 
     ajax.responseType = Ajax.FBML; 
     ajax.onerror = function(error) 
     { 
      new Dialog().showMessage("Alert", "Required authorization.","Close"); 
     }; 

     ajax.ondone = function(data) 
     { 
      intro.setStyle('display', 'none'); 
      root.setInnerFBML(data); 
     } 
     ajax.requireLogin = true; 
     ajax.post("<?php echo $fbconfig['baseUrl'] ?>iframe.php"); 
    } 
</script> 
+0

你的例子中$ fbconfig ['baseUrl']代表什么? – jayarjo 2012-01-30 17:43:12

+1

它在我的服务器(画布)上保存应用程序URL,例如HTTP://example.tld/facebook/myapp/ – vlgalik 2012-02-01 08:52:45

相关问题