我正在尝试在使用 Facebook Java API 编码的 iFrame Facebook 应用程序中获得用户对“offline_access”的许可。我了解在用户批准我的申请后,我需要获取“无限期会话密钥”。目前,我可以完成我想要的,但是以一种非常尴尬的方式可能是不正确的。必须有更好的方法来做到这一点。任何想法/想法将不胜感激!
我做了什么
在我的应用程序的 servlet 中,我检查用户当前是否具有“offline_access”权限。如果他们这样做,我会通过Permission.authorizeUrl(Permission.OFFLINE_ACCESS)
. 然后我打电话response.redirect
进入权限页面。我遇到的两个问题是:
- 重定向的权限页面显示在 iFrame 中。因此,Facebook 图书主菜单栏等会显示两次。即看起来像一个应用程序嵌入在另一个应用程序中。
- 一旦重定向到权限页面,用户将被“卡住”。
client.getCacheSessionKey
除非用户手动返回到我的应用程序中的页面,否则我将无法获得“无限期会话密钥”(通过调用)。
可能的解决方法?
- 有没有办法在新窗口中打开/重定向到权限页面?这样也许我可以在我的 servlet 中有一个线程来继续检查重定向后是否设置了权限。然后我可以获得“无限期会话密钥”并将其存储在某个地方?
- 有没有办法在设置权限后设置 Facebook 的 URL?(很像 pre-auth 和 post-auth URL 设置?)或者在访问权限页面后以某种方式控制?
- 还有其他设置我的应用程序的方法吗?作为一个新手,我可能完全搞错了......