FB Canvas授权重定向正在把我踢出FB

时间:2011-09-19 15:25:15

标签: facebook canvas oauth redirect

我有一个Canvas应用程序,允许用户首先看到它的全部内容,然后只有在他希望执行某些操作时才会请求权限。

当用户输入应用程序时,它会启动而不需要权限。我们提供“登录”链接,该链接将向

发出请求

https://www.facebook.com/dialog/oauth/authorize?client_id=XXX&redirect_uri=http://myapp.com&scope=publish_stream

这会导致Facebook徽标显示“Go to Facebook.com”链接。我知道存在导致这种问题的跨框架问题,可以通过简单地将target = _top放到链接上(或者使用Javascript来解决)来修复。现在,我想保持简单,所以我不使用它。我注意到这是在iframe_canvas这是好的,所以我点击该链接,并获得“请求权限”,接管屏幕(这不是一个弹出窗口吗?)和iframe_canvas似乎有走开了,我现在有了UIFullPage_Container。

我点击允许,Facebook将浏览器重定向到

http://myapp.com&code=XXXXXXX

这很糟糕,因为我的“Canvas”应用程序突破了画布并占据了整个浏览器。

我有什么问题,或者这是某种类型的Facebook错误?我是否只是将其重定向回http://apps.facebook.com/mycanvasapp,如果有,是否有某种方法可以传递一些参数?

2 个答案:

答案 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”模式。