аутентификация на фейсбуке с помощью omniauth - PullRequest
4 голосов
/ 09 марта 2011

Я добавляю аутентификацию Facebook с помощью omniauth в свое приложение в соответствии с Райаном Бейтсом screencast

Проблема с функцией создания в контроллере аутентификации. функция create должна обрабатывать обратный вызов facebook (что, похоже, нормально).

Ошибка в файле журнала:

NoMethodError (неопределенный метод `аутентификации 'для nil: NilClass)

Ошибка относится к этой строке в функции создания в контроллере аутентификации:

current_user.authentications.find_or_create_by_provider_and_uid (auth ['provider'], auth ['uid'])

Как вы думаете, в чем проблема?

Спасибо

Одед

Ответы [ 3 ]

4 голосов
/ 28 марта 2011

Проблема в том, что вы не вошли в систему при попытке аутентификации, поэтому current_user равен nil. Войдите в систему, а затем авторизуйтесь, и вы будете перенаправлены на страницу индекса аутентификации. Именно так он и сделал в Railscast. В следующем эпизоде ​​он обращается к пользователю, который не вошел в систему.

1 голос
/ 09 марта 2011

Ваш current_user равен нулю, поэтому, когда вы пытаетесь получить доступ к аутентификации на нулевом объекте, вы получаете сообщение об ошибке, которое вы видите.

Вам нужно исправить свой метод current_user.

0 голосов
/ 06 февраля 2012

У меня тоже была такая же проблема, но она решена. Причина, по которой выдается эта ошибка, заключается в том, что действие create AuthenticationController ожидает, что в данный момент вошел в систему пользователь, и пытается найти или создать новую аутентификацию для этого пользователя. Поскольку мы пытаемся пройти аутентификацию, не войдя в систему с именем пользователя и паролем, переменная current_user будет иметь значение nil.

Перейдите по ссылке, чтобы решить проблему http://railscasts.com/episodes/236-omniauth-part-2?view=asciicast

...