【问题标题】:Facebook iframe application after authorization redirect to facebook page tab授权后的 Facebook iframe 应用程序重定向到 Facebook 页面选项卡
【发布时间】:2010-11-10 09:40:49
【问题描述】:

我在授权后将用户重定向回 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;
    }
}

【问题讨论】:

  • 你在使用什么 Facebook 类?当 PHP 可以做到时,你为什么要使用 JS 重定向? php.net/manual/en/function.header.php
  • 我正在使用 PHP-SDK。 JS 重定向是存在的,因为这都在 Facebook 页面内的 Iframe 中。

标签: php tabs facebook authorization


【解决方案1】:

没关系,我已经在“页面”选项卡中使用 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>

【讨论】:

  • 在您的示例中 $fbconfig['baseUrl'] 代表什么?
  • 它在我的服务器(画布)上保存应用程序 URL,例如example.tld/facebook/myapp
猜你喜欢
  • 2012-03-20
  • 1970-01-01
  • 1970-01-01
  • 2012-08-12
  • 1970-01-01
  • 2012-01-10
  • 2012-01-25
  • 2011-09-09
  • 1970-01-01
相关资源
最近更新 更多