Rails omniauth - твиттер, запрашивающий авторизацию приложения каждый раз, когда пользователь входит в систему - PullRequest
5 голосов
/ 24 ноября 2011

В Railscast: http://railscasts.com/episodes/241-simple-omniauth Райан использует omniauth для входа в систему.В видео, когда он нажимает на кнопку входа в первый раз, Twitter спрашивает пользователя, хотят ли они авторизовать приложение Райана.При повторном нажатии кнопки входа в систему он автоматически регистрирует пользователя. В моем приложении пользователь вынужден каждый раз авторизовывать мое приложение.Если пользователь вошел в твиттер и уже авторизовал приложение, то не должно ли оно «просто работать»?

РЕДАКТИРОВАТЬ: мое приложение в настоящее время имеет разрешения на чтение, запись и прямые сообщения.Я также использую omniauth-twitter (0.0.6).

Ответы [ 7 ]

20 голосов
/ 18 апреля 2013

Добавление ответа без рельсов здесь.

Просто убедитесь, что в настройках Twitter для вашего приложения установлен флажок «Разрешить использование этого приложения для входа в Twitter». В противном случае Twitter всегда будет перенаправлять вас на страницу авторизации вместо аутентификации.

Я потратил 45 минут на поиск и устранение неисправностей в приложении rails, прежде чем, наконец, проверить настройки Twitter, надеюсь, это сэкономит кому-то время.

3 голосов
/ 25 ноября 2011

Я подозреваю, что регрессия или что-то в twitter oauth gem :

EDIT: решает проблему.

Я считаю, что oauth удалены отдельные стратегии.В любом случае, используя Devise, следующее исправило это (должно работать с изменениями для других конфигов oauth Twitter):

config.omniauth :twitter, 'consumer_key' , 'consumer_secret', :client_options => {:authorize_path => '/oauth/authenticate'}
3 голосов
/ 24 ноября 2011

Если вы запросили разрешение для привилегий DM или других расширенных привилегий, это может вызвать проблемы. (https://dev.twitter.com/discussions/1459)

Если это не поможет, было бы полезно больше подробностей.

2 голосов
/ 25 ноября 2011

Хорошо, так что просто выпустили новую версию для этого. Пожалуйста, используйте 0.0.7

https://rubygems.org/gems/omniauth-twitter/versions/0.0.7

Благодаря @ fosrias

ПриветствияАрун

1 голос
/ 19 сентября 2012

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

"/auth/twitter?x_auth_access_type=read"
0 голосов
/ 03 апреля 2014

Если у вас изначально были права доступа к приложению «Чтение и запись», а затем добавили разрешение «Доступ к прямым сообщениям» ПОСЛЕ однократной аутентификации, то последующие попытки аутентификации приведут к повторному появлению страницы «Вход в систему». Но обратите внимание, вы увидите, что приложение по-прежнему НЕ будет иметь разрешения на доступ к прямым сообщениям для этого пользователя. Это связано с тем, что ваше приложение сейчас пытается запросить прямые разрешения для сообщений, но ваш токен доступа изначально был настроен только для чтения / записи.

Я нашел это обсуждение , где @toptwetcom упоминает, что ваш токен доступа (а не ключ API приложения) должен быть восстановлен после изменения разрешений приложения. Я все еще в режиме разработки, но вот что у меня сработало:

  1. Перейдите на https://apps.twitter.com,, найдите свое приложение и перейдите на вкладку Разрешения
  2. Измените разрешения на «Чтение, запись и доступ к прямым сообщениям», если вы этого еще не сделали. (Иногда для отображения изменений требуется минута - продолжайте обновлять!)
  3. Перейти на вкладку API Keys (все еще для приложения)
  4. Нажмите кнопку «Восстановить мой токен доступа» и подтвердите.
  5. Выйти из приложения (если еще нет)
  6. В своем приложении войдите в систему через Twitter (и повторно авторизуйте приложение).

Если вы сейчас перейдете к https://twitter.com/settings/applications, вы должны увидеть, что вы дали разрешения «читать, писать и направлять сообщения» вашему приложению. Кроме того, если вы выйдете из своего приложения и снова войдете в Twitter, оно должно «просто работать» (если вы уже вошли в Twitter).

Также обязательно прочитайте @ JasonLogsdon's answer .

0 голосов
/ 08 марта 2014

Похоже, когда в настройках вашего приложения есть чтение, запись и И Доступ к прямым сообщениям оно всегда запрашивает разрешения. Установка значения «Только чтение или чтение и запись» решает эту проблему.

...