所以在更新到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();"
。有人可以帮忙吗?
答案 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>
FBXML
和scope="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;