我正在通过Canvas开发Facebook中包含的游戏应用。游戏由几个与顺序无关的“级别”组成,每个级别与数据库中的条目相关联。比喻说,你可以认为它与hangman类似,因为每次游戏都是相同的,但内容是不同的(在hangman的情况下,就是被猜测的单词)。
当用户播放关卡时,我会通过OpenGraph API创建一个故事。所以说,例如鲍勃扮演水平Alpha,他的朋友苏看到他的饲料故事,上面写着“鲍勃在SomeGame中扮演阿尔法”。我希望在该故事中有一个链接将Sue直接带到SomeGame中的“Alpha”级别,而不到游戏中的通用入口点,用户可以选择一个级别(即通常是什么)当您点击Canvas URL时发生。你似乎可以使用params,如下所示:
apps.facebook.com/somegame?level_id=1234,
然后在您的Canvas URL端点中,您可以根据这些参数重定向。但这是处理这个问题的首选方法吗?
此外,如果Feed中的故事标题是“Bob在SomeGame中播放Alpha”,我希望“Alpha”上的链接让Sue播放“Alpha”,但据我所知,该链接是由og:url在对象元数据中生成,这意味着它必须链接到
www.somegame.com/level/:id,而不是
apps.facebook.com/somegame?context_params=some_stuff。
但我真的不希望别人访问
www.somegame.com/level/:id
直接 - 我希望他们留在Facebook内,并在Canvas托管的应用程序中查看它。
如果我给出
,我可以得到我想要的行为www.somegame.com/level/:id
javascript重定向,它使用级别ID的参数:
(top.location.href =“http://apps.facebook.com/somegame?level_id=1234)
然而,这似乎是一个黑客,我希望有一个更简洁的方法来做到这一点,没有浏览器驱动的重定向。谢谢!