2011-09-29 68 views
0

我想要求用户授予我的应用程序与“Facebook的JavaScript SDK”的“publish_stream”权限。Fb.ui()弹出工程,但对话框永久加载

我初始化这样的:

FB.init({ 
    appId : '203702512703', 
    status : true, // check login status 
    cookie : true, // enable cookies to allow the server to access the session 
    xfbml : true, // parse XFBML 
    channelURL : 'http://mydomain.com/channel.php', // channel.html file 
    oauth : true // enable OAuth 2.0 
}); 

而且我FB.ui调用如下:

FB.ui({ 
    client_id: '203702512703', 
    method: 'oauth', 
    scope: 'publish_stream', 
    redirect_uri: 'http://mydomain.com/', 
    response_type: 'token', 
    display: 'dialog' 
    }); 

如果我更改 '对话框中' 到 '弹出' 它完美的作品。但是,如果我指定'对话框'或将选项保留出来,它会显示fb-div,但带有一个加载动画(如下所示:http://p.iqs.me/t1c4j),并且内容不会加载。

我在做什么错了?

更新: 我找到了这个网页http://developers.facebook.com/docs/reference/dialogs/#display,上面写着有关使用“IFRAME”为显示以下内容: “因为点击劫持的危险,这是只允许某些特定的对话,并要求你通过一个有效的access_token “

不会说任何关于”对话框“的想法,但iframe和对话框都会给出相同的错误结果。

我将如何通过access_token?

+0

您是否遇到类似于[bug](http://bugs.developers.facebook.net/show_bug.cgi?id=18942)的问题? – ifaour

+0

似乎有点相似。但是,如果这是一个错误,我想成千上万的应用程序会受到它的影响。这更可能是我在这里做错了事。 – Martin

回答

1

由于安全性(clickjacking和网上诱骗),'popup'对于JavaScript SDK的'oauth'或FB.login是强制性的。我建议使用FB.login来获取权限或进行身份验证,因为它更方便。

希望这有助于

+0

好的。谢谢:)这没有很好的记录。 – Martin

+0

@Martin:我同意 –

0

也有在你可以使用显示器的方式的差异:这取决于您是否是在一个标签或画布上的iframe的FB.login。在选项卡上,您不需要access_token,并且在画布上进行操作。

因此,在一个画布上,您被阻止弹出窗口被阻止,或很大一部分用户拒绝为他们发起的墙壁提供基本权限。 IMVHO FB需要尽快解决这个问题,但是我已经记录了几个月的bug,并且没有任何改变的迹象。