Facebook应用程序选项卡URL

时间:2010-01-16 18:59:29

标签: facebook facebooker facebook-fql

我有一个Facebook应用程序,可以作为标签添加到粉丝页面。该应用程序要求对用户进行身份验证才能使用它。这可以通过在链接中使用requirelogin = 1来实现,该链接仅对未添加应用程序的用户可见。这部分工作正常。

但是,在用户从dhtml弹出窗口中获取我的应用程序权限后,打开了requirelogin,我希望重新加载该选项卡。为此,我需要将完整的URL包含在链接中,如下所示:

<a href="http://www.facebook.com/pages/PAGE_NAME/PAGE_ID?v=app_APP_ID" requirelogin=1>Authorize</a>

我无法弄清楚如何获取完整的网址,或者至少是PAGE_NAME动态构建此网址。似乎应用程序应该能够知道它在哪里没有任何特殊权限。

4 个答案:

答案 0 :(得分:3)

加载标签后,API会向您传递Signed Request,其中包含page数组,其中包含idliked&amp; admin。您可以使用它来动态提取当前正在调用代码的页面ID。

答案 1 :(得分:2)

如果你有PAGE ID和APP ID,这就是你要做的:

http://www.facebook.com/profile.php?id=PAGE_ID#v=app_APP_ID

例如:

http://www.facebook.com/profile.php?id=282955631557#v=app_278523304881

答案 2 :(得分:0)

在新计划中,#no long work。一个人需要使用

http://www.facebook.com/profile.php?id=PAGE_ID#v=app_APP_ID

要将参数传送到应用程序,它必须位于名为“app_data”

的参数中
http://www.facebook.com/profile.php?id=PAGE_ID#v=app_APP_ID&app_data="..."

要携带多个参数,最好的策略是在Json中编码app_data。

答案 3 :(得分:0)

以上所有答案都不起作用(仅将您重定向到页面流)或现在已弃用。您正在使用JS的最佳解决方案:

// called when like button, box, etc is rendered
FB.Event.subscribe("xfbml.render", function() { 

    // assigns click to that thing
    FB.Event.subscribe("edge.create", function(response) { 

        window.location.reload(); // reload frame only

    });
});

您还必须加载并初始化facebook JS SDK。如果您不知道如何操作,请使用:

<script>
    document.onload = function(){

        (function(d){
            var js,id='facebook-jssdk';
            if(d.getElementById(id)){return;}
            js=d.createElement('script');
            js.id=id;js.async=true;js.src="//connect.facebook.net/pl_PL/all.js";
            d.getElementsByTagName('head')[0].appendChild(js);
        }(document));

        window.fbAsyncInit = function(){
            FB.init({
                appId  : <PASTE_YOUR_APP_ID_HERE>,
                status : true, // check login status
                cookie : true, // enable cookies to allow the server to access the session
                xfbml  : true  // parse XFBML
            });
            FB.Event.subscribe("xfbml.render", function() {
                FB.Event.subscribe("edge.create", function(response) {
                    window.location.reload();
                });
            });
        }
    }
</script>