我有一个Canvas应用程序,允许用户首先看到它的全部内容,然后只有在他希望执行某些操作时才会请求权限。
当用户输入应用程序时,它会启动而不需要权限。我们提供“登录”链接,该链接将向
发出请求这会导致Facebook徽标显示“Go to Facebook.com”链接。我知道存在导致这种问题的跨框架问题,可以通过简单地将target = _top放到链接上(或者使用Javascript来解决)来修复。现在,我想保持简单,所以我不使用它。我注意到这是在iframe_canvas这是好的,所以我点击该链接,并获得“请求权限”,接管屏幕(这不是一个弹出窗口吗?)和iframe_canvas似乎有走开了,我现在有了UIFullPage_Container。
我点击允许,Facebook将浏览器重定向到
这很糟糕,因为我的“Canvas”应用程序突破了画布并占据了整个浏览器。
我有什么问题,或者这是某种类型的Facebook错误?我是否只是将其重定向回http://apps.facebook.com/mycanvasapp,如果有,是否有某种方法可以传递一些参数?
答案 0 :(得分:1)
只需将其重定向到https://apps.facebook.com/yourcanvasapp/whateveryouwant?here=isokay
即可。 yourcanvasapp/
之后的部分将发送到您的服务器。您将获得signed_request
作为帖子arg,以及查询字符串中的其他参数和路径。
换句话说,如果您的安全画布网址为https://myapp.com/fbapp/
,并且您将用户发送到https://apps.facebook.com/mycanvasapp/foo?bar=baz
,则Facebook会在POST数据中向https://myapp.com/fbapp/foo?bar=baz
和signed_request发送POST。
答案 1 :(得分:1)
也许我在这里遗漏了一些东西,但是如何不使用target = _top让事情更简单?这实际上是Facebook通过显示“转到Facebook.com”链接强迫你做的事情;它正在实现顶级重定向,因为它必须显示权限对话框页面。那么为什么不自己动手并为用户节省可能令人困惑的中间步骤呢?
至于回到iframe,使用apps.facebook.com/yourapp/somepage作为你的redirect_uri可能会更容易,这样它会直接回到“app”模式。