2014-11-13 4 views
4

Как такие сайты, как StackOverflow и Untappd, «вынуждают» пользователя принимать свои разрешения?Facebook oAuth: принудительное разрешение электронной почты

Когда я пытался с помощью JavaScript SDK, я использовал объект области для запроса адресов электронной почты, но я продолжаю видеть «Редактировать информацию, которую вы предоставляете», позволяя пользователю не указывать свой адрес электронной почты. Я даже пробовал следовать за Manually Building a Login Flow с теми же результатами.

Изображение:

enter image description here

Как мы даем пользователю возможность зарегистрироваться на сайте через Facebook, мы полагаться на адрес электронной почты для создания аккаунта в нашей базе данных.

Однако такие сайты, как StackOverflow и Untappd, не предлагают такой опции, я вынужден принять эти разрешения.

Так в чем секрет? Как мне это достичь? Это какая-то настройка, которую я где-то просматриваю? Или это нужно «одобрить»?

ответ

13

Они используют старое приложение, созданное до конца апреля 2014 года, тогда оно было другим. Вы не можете заставить его больше, вы можете проверить, только если пользователь разрешил разрешения после входа в систему, с return_scopes флагом, например:

https://developers.facebook.com/docs/reference/javascript/FB.login/v2.2

+0

Ах, я вижу. Ну, это отстой. Спасибо за ответ :) Я бы поднял голову, но у меня нет репутации. –

+0

Я был бы рад, если бы вы приняли ответ, это достаточно хорошо :) – luschn

3

Вот решение, которое работает для меня с помощью Facebook SDK V4. х: How to “rerequest” email permission using Facebook iOS SDK 4.x?

Если пользователь отменяет «электронной почты» разрешение и продолжается в первый раз, другой раз подряд, где запрашивают доступ к электронной почте, не позволит ему, чтобы отменить электронную почту и нажмите «OK» больше.

Он будет представлен только с «Не сейчас» и «ОК» (который становится серым, если адрес электронной почты не выбран).

EDIT: Вот как rerequest с помощью Facebook JS SDK:

FB.login(function(response) { 
    console.log(response); 
}, { 
    scope: 'user_likes', 
    auth_type: 'rerequest' 
}); 
Смежные вопросы