如何在新的Facebook JavaScript SDK中请求权限?

如何在新的Facebook JavaScript SDK中请求权限?,javascript,facebook,Javascript,Facebook,我正试图从旧的JavaScript库(我使用的是Connect)切换到新的Facebook JavaScript SDK,但我无法显示权限对话框。我正在尝试获取“数据权限”部分下显示的权限对话框 我以前的电话是这样的(经过适当的初始化): 我尝试更改为此(再次,使用适当的初始化),但它不工作,它运行时没有错误,但回调从未运行: FB.login(function(response) { if (response.session) { if (response.pe

我正试图从旧的JavaScript库(我使用的是Connect)切换到新的Facebook JavaScript SDK,但我无法显示权限对话框。我正在尝试获取“数据权限”部分下显示的权限对话框

我以前的电话是这样的(经过适当的初始化):

我尝试更改为此(再次,使用适当的初始化),但它不工作,它运行时没有错误,但回调从未运行:

FB.login(function(response)
{
    if (response.session)
    {
        if (response.perms)
        {
            alert('user is logged in and granted some permissions: ' + response.perms);
        }
        else
        {
            alert('logged in but didnt grant permissions');
        }
    }
    else
    {
        alert('not logged in');
    }
},
{perms:'publish_stream'});

这是我正在使用的初始化代码:

window.fbAsyncInit = function()
{
    FB.init({appId: 'xxxxxxxx', status: true, cookie: true, xfbml: true});
};
(function()
{
    var e = document.createElement('script');
    e.async = true;
    e.src = document.location.protocol +
      '//connect.facebook.net/en_US/all.js';
    document.getElementById('fb-root').appendChild(e);
}());

在对代码进行了大量修补之后,我终于找到了错误所在。JavaScript代码需要放在HTML的末尾,靠近
标记。我把它搬到了那里,一切都正常了

在对代码进行了大量修改后,我终于找到了错误所在。JavaScript代码需要放在HTML的末尾,靠近
标记。我把它搬到了那里,一切都正常了

“无错误运行”是指出现权限对话框?您确定在FB初始化后触发此登录方法吗?尝试从应用程序首选项中删除应用程序,一旦授予权限,权限将被缓存。它不会引发任何错误,会运行,但不会执行任何操作(无提示)。尝试清除浏览器缓存,删除并重新添加应用程序,但仍然没有任何操作。如何在某些按钮或文档加载时触发它?您发布的代码是正确的,所以问题出在其他地方。也许发布你的FB init方法和触发登录的方法。你也在本地主机上尝试吗?如果是,您在“连接”设置选项卡上将哪个url设置为“连接url”和“基本域”?它是从页面中托管的Silverlight客户端触发的。Silverlight中的按钮调用该函数。如果运行时没有错误,您的意思是出现权限对话框?您确定在FB初始化后触发此登录方法吗?尝试从应用程序首选项中删除应用程序,一旦授予权限,权限将被缓存。它不会引发任何错误,会运行,但不会执行任何操作(无提示)。尝试清除浏览器缓存,删除并重新添加应用程序,但仍然没有任何操作。如何在某些按钮或文档加载时触发它?您发布的代码是正确的,所以问题出在其他地方。也许发布你的FB init方法和触发登录的方法。你也在本地主机上尝试吗?如果是,您在“连接”设置选项卡上将哪个url设置为“连接url”和“基本域”?它是从页面中托管的Silverlight客户端触发的。Silverlight中的一个按钮调用函数。更新:OAuth2规范规定“perms”现在应称为“scope”更新:OAuth2规范规定“perms”现在应称为“scope”
window.fbAsyncInit = function()
{
    FB.init({appId: 'xxxxxxxx', status: true, cookie: true, xfbml: true});
};
(function()
{
    var e = document.createElement('script');
    e.async = true;
    e.src = document.location.protocol +
      '//connect.facebook.net/en_US/all.js';
    document.getElementById('fb-root').appendChild(e);
}());