我正在为一个简单的 Facebook 应用程序登录。我可以使用 JavaScript SDK 在弹出窗口中使用 FB.login 或以下代码成功显示登录/扩展权限对话框:
FB.ui({ method: 'auth.login',
perms: 'read_stream,publish_stream',
display: 'popup' },
function (rsp) {
fg_log('on login');
if(rsp.session) {
if(rsp.perms) {
fg_log('PERMS: ',rsp.perms);
} else {
fg_log('Hmm. No permissions');
}
} else {
fg_log('Hmm. No login');
}
}
);
问题是......我不太喜欢弹出窗口。从 UI 的角度来看,我认为他们感觉不舒服,就像他们不属于应用程序的其余部分一样。并且让它们通过 JavaScript 显示还需要用户无缘无故地进行一次额外的点击——为了绕过弹出窗口拦截器,用户必须点击登录按钮之类的东西(基本上没有意义,因为到那时应用程序知道它需要显示一个登录按钮,它已经知道用户需要登录并且还可以只显示权限对话框)。
所以,我想,为什么不用 iframe 代替呢?弹出窗口拦截器没有问题,很好地嵌入在页面中,Facebook 似乎很喜欢它们。
在最近的(2.1.2)JavaScript SDK 源代码和 Facebook 开发者论坛上的各种其他帖子中稍作挖掘似乎表明可以将“display:'iframe'”作为选项的一部分传递给 FB.ui。
但是当我尝试它时,虽然 iframe 确实出现了,但我没有得到权限对话框,而是得到:
“发生错误。请稍后再试。”
(注意:稍后再试会产生相同的结果。)
有什么技巧可以让它工作,还是因为某种原因被禁止?