Fb.ui()弹出工作,但对话框永远加载

时间:2011-09-29 15:43:20

标签: facebook facebook-javascript-sdk facebook-ui

我想要求用户使用facebook javascript sdk向我的应用授予“publish_stream”权限。

我像这样初始化它:

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?

2 个答案:

答案 0 :(得分:1)

由于安全性(点击劫持和网络钓鱼),

'popup'对于方法是必需的:'oauth'或FB.login for javascript SDK。我建议无论如何都要使用FB.login获取权限或进行身份验证,因为它更方便。

希望这会有所帮助

答案 1 :(得分:0)

您使用display的方式也存在差异:FB.login的iframe取决于您是在标签中还是在画布上。在选项卡上,您不需要access_token,也不需要在画布上。

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