2010-06-29 104 views
1

我试图从旧的JavaScript库(我在使用Connect的地方)切换到新的Facebook JavaScript SDK,我无法获得权限对话框。我试图获取“数据权限”部分here下显示的权限对话框。如何在新的Facebook JavaScript SDK中请求权限?

我的老电话是这(用适当的初始化):

FB.Connect.showPermissionDialog('publish_stream'); 

我试图改变这(再次,进行适当的初始化),但它不工作,它运行没有错误,但回调永远不会运行:

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); 
}()); 
+0

通过运行没有错误,你的意思是权限对话框出现?在FB初始化后,你确定触发了这个Login方法吗?尝试从应用程序首选项中删除应用程序,一旦授予它们权限就会被缓存。 – serg 2010-06-29 16:57:04

+0

它不会抛出任何错误,它会运行但不执行任何操作(不提示)。尝试清除浏览器缓存并删除并重新添加应用程序,但仍然没有任何结果。 – 2010-06-29 20:38:16

+0

如何触发它,在某个按钮上或文档加载?你发布的这段代码是正确的,所以问题在其他地方。也许发布你的FB init方法和触发登录的方法。 – serg 2010-06-29 21:08:19

回答

1

经过很多修改代码试图让这个工作,我终于找到了错误的地方。 JavaScript代码需要放在HTML末尾,</body>标签附近。我把它移到那里,一切都奏效了!

+0

更新:OAuth2规范规定'烫发'现在应该被称为'范围' – 2013-01-19 15:57:43