与显示:怎么办FB.ui( 'auth.login' ... {法): 'IFRAME' 而不是 '弹出'?

Wes*_*n C 8 javascript facebook facebook-iframe

我正在登录一个简单的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');
        }
    }
);
Run Code Online (Sandbox Code Playgroud)

问题是......我不太喜欢弹出窗口.从UI的角度来看,我认为他们感觉不对,就像他们不属于应用程序的其余部分一样.并让他们通过JavaScript现身还需要从用户没有理由额外的点击 - 为了避开弹出窗口拦截器,用户必须点击类似登录按钮(主要是没有意义的,因为在时间应用程序知道它需要显示登录按钮,它已经知道用户需要登录并可能也只是目前的权限对话框).

所以,我想,为什么不是iframe呢?没有弹出窗口拦截器的问题,在页面中很好地嵌入,而Facebook似乎很喜欢它们.

在最近的(2.1.2)的JavaScript SDK源等各个岗位上的Facebook开发者论坛上有一点点似乎预示着一个可以通过"显示:'IFRAME’"为选项FB.ui.部分

但是当我尝试它时,虽然iframe确实出现了,而不是获得权限对话框,我得到:

"发生错误.请稍后再试."

(注意:稍后再次尝试会产生相同的结果.)

是否有一个技巧可以使这个工作,或者由于某种原因被禁止?

Bre*_*ley 2

尝试使用 FB.login 而不是 FB..ui。如果用户已经登录,并通过 FB.login 授予您请求的权限,则不会出现对话框。否则,将显示“内联”请求额外权限/登录的信息。

当用户已经登录时使用登录功能来获取更多权限有点违反直觉。但它确实有效。

  • 这有一个问题 - 在页面选项卡上,它不会是“内联”的;这将是一个可能被阻止的弹出窗口。 (2认同)