我在粉丝专页中将facebook app构建为iframe应用。我现在的问题是:我添加了facebook请求对话框(http://developers.facebook.com/docs/reference/dialogs/requests),一切顺利,除了一件事:当用户收到通知时,链接去画布页面,而不是粉丝页面(我想去的地方......)
由于我无法说服facebook添加一些功能(这会很棒),我正在寻找一种自动从app画布页面重定向到粉丝页面的方法,这个应用程序被添加为iframe标签。
我希望有人理解我想做的事情...... :)
谢谢,彼得答案 0 :(得分:31)
我还想确保用户通过Facebook页面标签查看我的Facebook应用程序(而不是通过Facebook App页面或直接查看实际网站本身)。我已经设法通过我的文档的<script>
head
标签中的这个Javascript实现了它(经过测试的Mac / PC FF,Chrome,Opera,IE6-8,Safari)。
<script type="text/javascript">
function NotInFacebookFrame() {
return top === self;
}
function ReferrerIsFacebookApp() {
if(document.referrer) {
return document.referrer.indexOf("apps.facebook.com") != -1;
}
return false;
}
if (NotInFacebookFrame() || ReferrerIsFacebookApp()) {
top.location.replace("http://permalink-to-my-facebook-page-tab");
}
</script>
答案 1 :(得分:14)
如果我理解正确,你可以这样做:
top.location.href='http://www.facebook.com/YOUR_PAGE_NAME?sk=app_YOUR_APP_ID'
或者您可以使用标头重定向到该网址。这将重定向到粉丝页面上的应用程序选项卡。
答案 2 :(得分:2)
我的应用程序非常动态,我永远不知道它添加到哪个页面。因此,当我使用网址“http://www.facebook.com/YOUR_PAGE_NAME?sk=app_YOUR_APP_ID”时,它只会将我重定向到页面,而不是重定向到应用程序标签。我所做的是:
1)我从signed_request获取了页面ID(一旦有人访问该页面,你的应用程序就会获得加密的base64url参数,所以你必须解密它并从JSON页面对象中选择id值)
2)然后我从https://graph.facebook.com/PAGE_ID_YOUR_GET获取页面数据。您将获得JSON对象,其中包含一些以JSON格式响应的页面数据。
3)仅在第2点之后,我从响应中获得页面的“链接”值。这就像http://www.facebook.com/pages/Some-Page-Name
4)最后我将'?sk = app_YOUR_APP_ID'添加到页面链接。
也许这太复杂了,但这是我按照预期的方式为我工作的唯一方式(完全重定向到页面应用程序选项卡)。
答案 3 :(得分:-2)
<script type="text/javascript">
function NotInFacebookFrame() {
return top === self;
}
function ReferrerIsFacebookApp() {
if(document.referrer) {
return document.referrer.indexOf("apps.facebook.com") == -1;
}
return false;
}
if (NotInFacebookFrame() || ReferrerIsFacebookApp()) {
top.location.replace("http://permalink-to-my-facebook-page-tab");
}
</script>