проверка facebook запросить дополнительные разрешения после входа пользователя в систему

Допустим, у меня есть приложение facebook, работающее с использованием JS SDK.

Первый пользователь нажимает на ССЫЛКУ А, и я вызываю FB.login(), запрашивая разрешение на «электронную почту».

<a href="#" onclick="doLogin();>LINK A</a>
<script>
function doLogin() {
FB.login(function (res) {
//res contains authResponse, i.e. the user is logged in.
}, { scope : 'email'} });
}
</script>

Затем я проверю authResponse, чтобы проверить, вошел ли пользователь в систему или нет.

if(res.authResponse) {
//User logged in
} else {
//User NOT logged in
}

ТЕПЕРЬ предположим, что в ССЫЛКЕ B я хочу запросить разрешение «user_birthday»:

FB.login(function (res) {
//Now res.authResponse is set even if user did NOT grant access to the "user_birthday" permission
}, { scope : 'user_birthday'} });

Однако, когда делается запрос на «user_birthday», пользователь уже вошел в приложение, и поэтому authResponse будет установлен независимо от того, предоставил ли пользователь доступ к дополнительному разрешению или нажал «Отмена».

Есть ли способ проверить, дал ли пользователь дополнительное разрешение?

Я знаю, что могу выполнить поиск по API в /me/permissions, но мне интересно, есть ли способ сделать это в обратном вызове FB.login()?


person jack    schedule 05.02.2012    source источник


Ответы (1)


Да, используя этот токен доступа пользователя, запросите me/permissions.

FB.api('me/permissions',function(permsArr){
  var canGetBirthday = PermissionExists(permsArr, 'user_birthday'); // write your own PermissionsExists parser....
});
person DMCS    schedule 05.02.2012
comment
Разве нет способа сделать это без дополнительного поиска? - person jack; 05.02.2012
comment
Не то чтобы я в курсе. Вы можете попробовать сделать console.dir(response); для того, что возвращает facebook, но я сомневаюсь, что там будет что-то вроде предоставленных разрешений. - person DMCS; 05.02.2012