我有一个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动态构建此网址。似乎应用程序应该能够知道它在哪里没有任何特殊权限。
答案 0 :(得分:3)
加载标签后,API会向您传递Signed Request,其中包含page
数组,其中包含id
,liked
&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>