FB.login()未请求给定的权限

5
登录功能可以正常使用,但是它只请求基本权限,而且当取消或完成对话框时没有触发任何警报。
 window.fbAsyncInit = function() {

    // init the FB JS SDK
    FB.init({
      appId      : 'XXX', // App ID from the App Dashboard
      channelUrl : 'XXX', // Channel File for x-domain communication
      cookie     : true, // set sessions cookies to allow your server to access the session?
      xfbml      : true,  // parse XFBML tags on this page?
      frictionlessRequests: true,
      oauth: true
    });

     FB.login(function(response) {
       if (response.authResponse) {
         alert("ok");
       } else {
        alert("canceled");
       }
     }, {scope:'publish_actions,publish_stream'});

  };
3个回答

9
你是否正在使用fb:login-button?如果是的话,你尝试在那里添加权限而不是在FB.login()中添加吗?所以它看起来应该像这样:
<fb:login-button scope="publish_actions,publish_stream"></fb:login-button>

2
这个答案应该被标记为正确的答案。这解决了我的问题。当使用fb:login-button时,方法FB.Login不会发送scope参数。这似乎是一个Facebook库的bug。 - Bernardo Pacheco
1
这个问题找了好久啊!有人已经把这个问题报告给Facebook作为一个bug了吗?当使用XFBML时,{scope:''}会被完全忽略。 - Filip Haglund

3

重要提示:如果您的 Facebook 应用程序是公开的,则需要向 Facebook 提交您需要审核的权限。请检查您的开发者仪表板。如果您正在开发中,请不要将您的应用程序公开,并通过 Facebook 仪表板添加用户进行测试。


谢谢!我刚开始学习。我不明白为什么在Graph API Explorer中具有附加权限的查询可以工作,但在我的应用程序中却不能。你的答案帮助了我。现在完全明白了。 - Jason Osgood

0

尝试过了,但不起作用。FB.login(function(response) {}, {scope:'publish_actions'});也不起作用。 - Chris
当我直接将其放在onclick事件上时,它可以工作:onclick="FB.login(function(response) {}, {scope:'publish_actions'});" - Chris
我明白了,无论如何自动触发FB.login()并在每个页面上都这样做都不是一个好主意。这里有一个小例子可以帮助你:http://facebook.stackoverflow.com/a/15720747/2212966 - Alexis B.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接