facebook将应用程序从画布页面重定向到粉丝页面

facebook将应用程序从画布页面重定向到粉丝页面,facebook,canvas,facebook-page,Facebook,Canvas,Facebook Page,我正在将facebook应用程序构建为粉丝页面中的iframe应用程序。我现在的问题是:我添加了facebook请求对话框(http://developers.facebook.com/docs/reference/dialogs/requests),一切都很顺利,除了一件事:当用户收到通知时,链接会转到画布页面,而不是风扇页面(我想去的地方…) 因为我无法说服facebook添加一些功能性(那太好了),所以我正在寻找一种方法来自动从应用程序画布页面重定向到风扇页面,在那里这个应用程序被添加为i

我正在将facebook应用程序构建为粉丝页面中的iframe应用程序。我现在的问题是:我添加了facebook请求对话框(http://developers.facebook.com/docs/reference/dialogs/requests),一切都很顺利,除了一件事:当用户收到通知时,链接会转到画布页面,而不是风扇页面(我想去的地方…)

因为我无法说服facebook添加一些功能性(那太好了),所以我正在寻找一种方法来自动从应用程序画布页面重定向到风扇页面,在那里这个应用程序被添加为iframe选项卡

我希望有人明白我想做什么……:)


谢谢你,彼得

如果我理解正确,你可以这样做:

top.location.href=http://www.facebook.com/YOUR_PAGE_NAME?sk=app_YOUR_APP_ID'

或者您可以使用标题重定向到该url。这将重定向到粉丝页面上的应用程序选项卡。

我还想确保用户通过Facebook页面选项卡(而不是通过Facebook应用程序页面或直接查看实际网站本身)查看我的Facebook应用程序。我已经在文档的
标题中的
标记中使用Javascript实现了这一点(测试了Mac/PC FF、Chrome、Opera、IE6-8、Safari)


函数NotInFacebookFrame(){
返回top==self;
}
函数refererRisfaceBookApp(){
if(文件参考人){
return document.referer.indexOf(“apps.facebook.com”)!=-1;
}
返回false;
}
if(NotInFacebookFrame()| | refererIsFaceBookApp()){
顶部。位置。替换(“http://permalink-to-my-facebook-page-tab");
}

我的应用程序非常动态,我不知道它添加到了哪个页面。所以当我使用URL'http://www.facebook.com/YOUR_PAGE_NAME?sk=app_YOUR_APP_ID'它只将我重定向到页面,而不是应用程序选项卡。我所做的是:

1) 我从signed_请求中获取页面id(你的应用程序在有人访问页面时获取的加密in base64url参数,因此你必须对其进行解密并从JSON页面对象中选取id值)

2) 然后我从中获取页面数据。您将获得JSON对象,其中包含一些JSON格式的页面数据作为响应

3) 只有在第2点之后,我才能从响应中获得页面的“链接”值。就像

4) 最后,我将“?sk=app\u YOUR\u app\u ID”添加到页面链接中

也许这太复杂了,但这是我所期望的唯一方法(精确重定向到页面应用程序选项卡)。


函数NotInFacebookFrame(){
返回top==self;
}
函数refererRisfaceBookApp(){
if(文件参考人){
return document.referer.indexOf(“apps.facebook.com”)=-1;
}
返回false;
}
if(NotInFacebookFrame()| | refererIsFaceBookApp()){
顶部。位置。替换(“http://permalink-to-my-facebook-page-tab");
}

我也面临同样的问题,我想知道你们是如何发现自己在应用程序页面上而不是画布url上的。如何防止无限重定向循环?@Michael。嗯,您通常将选项卡url和页面url分开,或者在应用程序设置中添加GET参数,以了解调用了哪个页面。@DannyKK。谢谢你的提示。我找到了一种不必设置GET变量的替代方法。您还可以检查$\u SERVER['HTTP\u REFERER']变量,查看apps.facebook.com是否存在。是的,我也这样做。但我现在面临另一个问题:当我在HTTP_REFERER中有apps.facebook.com时,我会:top.location.href=''-在mozzila和chrome中工作正常,但在internet explorer中我会得到“拒绝许可”。我发现这是一个跨域脚本,但解决方法是什么?有人有同样的问题吗?对不起,我正在使用:top.window.location,当我更改为top.location.href时,它正在工作:)如果用户直接转到你的应用程序(画布),这将不起作用,签名的请求中将没有页面对象,所以无论哪种方式,你都必须在app-config的每个实例中设置你的页面名和id,才能重定向到正确的位置。天啊,这正是我需要的。我只是改为使用带有名称空间的函数。