2

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

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

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

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

4

4 回答 4

3

当您的选项卡被加载时,API 会向您传递一个签名请求,其中包含一个page数组containsidliked&admin等。您可以使用它来动态提取当前正在调用您的代码的页面 id。

于 2011-07-19T06:06:30.673 回答
2

If you have the PAGE ID and APP ID, this is what you do:

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

For example:

http://www.facebook.com/profile.php?id=282955631557#v=app_278523304881
于 2010-04-12T03:25:32.580 回答
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>
于 2012-05-08T10:53:35.117 回答
0

在新方案中,# 不再有效。一个需要使用

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。

于 2012-04-22T13:48:02.613 回答