Facebook(FB.login)没有请求我的权限

时间:2011-08-08 22:14:45

标签: facebook permissions scope facebook-php-sdk

所以在更新到php 3.0 sdk之后,我的FB.login()函数不再要求我设置它要求的权限。还有其他人得到这个吗?这里有一些代码:

window.fbAsyncInit = function() {
  FB.init({
    appId: 'xxx',
    status: true,
    cookie: true,
    xfbml: true,
    oauth : true // enables OAuth 2.0
  });
  // whenever the user logs in, we refresh the page
  //FB.Event.subscribe('auth.login', function() {
  //  window.location.reload();
  //});      
};


FB.login(function(response) {
  if (response.authResponse) {
    console.log('Welcome!  Fetching your information.... ');
    FB.api('/me', function(response) {
      console.log('Good to see you, ' + response.name + '.');
      FB.logout(function(response) {
        console.log('Logged out.');
      });
    });
  } else {
    console.log('User cancelled login or did not fully authorize.');
  }
}, {scope:'read_stream,publish_stream,offline_access'});

我尝试访问它的方式是通过onClick="FB.login();"。有人可以帮忙吗?

6 个答案:

答案 0 :(得分:5)

检查JS SDK的来源我发现他们仍然使用 perms 而不是范围。 这对我有用:

  

...的onclick =“的FB.login(handleLoginResponse,   {perms:'email,manage_pages,user_birthday'}); return false;“...

我希望它有所帮助。

答案 1 :(得分:4)

我在JS SDK中看到了与此相关的内容。设置oauth=true时,功能

FB.login(function (response) {
    if (response.authResponse) {
        console.log('Welcome!  Fetching your information.... ');
    } else {
    console.log('User cancelled login or did not fully authorize.');
}
}, { scope: 'email,publish_stream,user_birthday,user_location' });

正确请求扩展权限,但使用<fb:login-button> FBXMLscope="email,publish_stream,user_birthday,user_location"不会。

这对我来说就像是一个Facebook错误...

答案 2 :(得分:2)

我的问题与你相似。 我已经检查了所有的javascript,以验证我的范围在FB.login定义中是否良好。 最后我意识到我的HTML中有一个Facebook按钮。

<form class="form-signin"><fb:login-button size="large">Facebook</fb:login-button></form>

当我还在FB按钮中定义范围时,如果我更改范围,Facebook会要求我正确接受新权限

<form class="form-signin"><fb:login-button size="large" scope="<?php print($sFacebookScope);?>">Facebook</fb:login-button></form>

答案 3 :(得分:1)

我认为是因为您在FB.logout区块内呼叫FB.login

有效的情况是,一旦他们登录,他们就会被注销。

所以分开这样:

// CALLED WHEN USER LOGS IN
function userLogin() {
    FB.login(function(response) {
        if (response.authResponse) {
            console.log('Welcome!  Fetching your information.... ');
            FB.api('/me', function(response) {
                console.log('Good to see you, ' + response.name + '.');
            });
        } else {
            console.log('User cancelled login or did not fully authorize.');
        }
    }, {scope:'read_stream,publish_stream,offline_access'});
}

// CALLED WHEN USER LOGS OUT
function userLogout() {
    FB.logout(function(response) {
        console.log('Logged out.');
    });
}

答案 4 :(得分:0)

我遇到了完全相同的问题,直到我意识到这是浏览器/ facebook缓存问题。确保您在网站空间中拥有最新代码,并在新浏览器中测试您的应用程序(如果可能是您问题的解决方案)。

答案 5 :(得分:0)

对我有用的唯一解决方案是将权限放在登录按钮标记中,如下所示:

  

&lt; fb:login-button show-faces =“true”width =“200”max-rows =“1”data-scope =“email”&gt; &lt; / FB:登录按钮&GT;