проверка на Facebook запрашивает дополнительные разрешения после входа пользователя - PullRequest
3 голосов
/ 05 февраля 2012

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

Первый пользователь нажимает на LINK A, и я звоню в FB.login () с просьбой разрешить «email».

<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
}

ТЕПЕРЬ скажем, что в LINK 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 ()?

1 Ответ

2 голосов
/ 05 февраля 2012

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

FB.api('me/permissions',function(permsArr){
  var canGetBirthday = PermissionExists(permsArr, 'user_birthday'); // write your own PermissionsExists parser....
});
...