2014-10-15 2 views
0

Я использую Devise и omniauth-facebook для входа в систему Facebook для моего сайта. Это определено в конфигурации/инициализаторах/devise.rb:Facebook игнорирует область

config.omniauth :facebook, app_id, app_secret, scope: 'email' 

Для моего сайта, мне нужно только адрес электронной почты. Тем не менее, мое приложение FB настроено с тремя правами доступа по умолчанию - email, public_profile и user_friends.

Когда нажата кнопка входа в систему, в диалоговом окне FB говорится, что мое приложение «получит следующую информацию: ваш общедоступный профиль, список друзей и адрес электронной почты». Мне не нужен список друзей и не хотят, чтобы удержать пользователей от подписания в

Я пытался манипулировать URL напрямую, но это не сработало:.

user_omniauth_authorize_path(provider, :scope => 'email') 

Рытье немного глубже, я обнаружили, что область действия по умолчанию в OmniAuth-Facebook является только по электронной почте, как это определено в OmniAuth-facebook/Библиотека/OmniAuth/стратегии/facebook.rb:

DEFAULT_SCOPE = 'email' 

Я пропускаю что-то здесь? Является ли Facebook игнорированием или переопределением параметра области? Есть ли способ изменить права доступа по умолчанию для моего приложения Facebook?

Любые указатели будут оценены по достоинству.

+0

Если вы используете API v1.0 это будет всегда, как для электронной почты, public_profile и user_friends. Решение заключается в использовании API v2.0 или новее – WizKid

+0

Спасибо, @WizKid. Это ведет меня по правильному пути. –

ответ

0

Поскольку Facebook изменения API в июле, вы должны теперь включать info_fields: 'email, name'

Итак: config.omniauth :facebook, app_id, app_secret, scope: 'email', info_fields: 'email, name'

Если сделать трюк

 Смежные вопросы

  • Нет связанных вопросов^_^