Facebook oauth没有重定向到Facebook iframe

时间:2011-06-26 20:43:23

标签: facebook oauth oauth-2.0

在使用iframe画布方法实现Facebook应用时,我遇到了一个奇怪的行为。

我一直在关注http://developers.facebook.com/docs/guides/canvas/的教程,到目前为止工作得非常好。

我发送身份验证的页面是(正如教程所说):

https://www.facebook.com/dialog/oauth?client_id=138548612888445&redirect_uri=http://localhost:8080/test/facebook/return.jsf

但是,当我接受该应用并允许其访问我的个人数据时,我会被重定向到返回页面作为最顶层的网址,然后看起来像这样:

+--------------------------------------------------+
|  My Content                                      |
|  http://localhost:8080/test/facebook/return.jsf  |
|  ?code=...
+--------------------------------------------------+

但是我不希望我的URL显示在最顶层的框架中,而是在默认的facebook框架内:

+-------------------------------------------+
| Facebook header                           |
+--------------------------+----------------+
| My Content               | Facebook right |
|                          | column         |
+--------------------------+----------------+

奇怪的是:只有当用户第一次需要授权应用时才会发生这种情况 - 之后,当我呼叫apps.facebook.com/fooapp内容正在iframe中正确显示时。

我做错了什么?

2 个答案:

答案 0 :(得分:2)

将您的Facebook应用网址设置为重定向uri。或者,在return.jsf中执行您需要执行的操作,然后将用户转发到您的Facebook应用程序URL。

答案 1 :(得分:1)

如果您使用:

 <script> top.location.href='$url'</script> 
像我一样,你需要改变的是top.location.hrefself.location.href