在使用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中正确显示时。
我做错了什么?
答案 0 :(得分:2)
将您的Facebook应用网址设置为重定向uri。或者,在return.jsf中执行您需要执行的操作,然后将用户转发到您的Facebook应用程序URL。
答案 1 :(得分:1)
如果您使用:
<script> top.location.href='$url'</script>
像我一样,你需要改变的是top.location.href
到self.location.href
。