2011-12-14 3 views
2

Я запустил пакет exec rake db: migrate и имею 2 базы данных. Я также использую SQLite в разработке. я получаю следующее сообщение об ошибке, когда я иду в http://localhost:3000/auth/facebook:Onmiauth-Facebook не сохраняет facebook_id для таблицы пользователей

You have a nil object when you didn't expect it! You might have expected an instance of Array. The error occurred while evaluating nil.[]

Он указывает на этот код в приложение/контроллеры/sessions_controller.rb: 12: в `создать» :

def create 
     auth_hash = request.env['omniauth.auth'] 

     @authorization = Authorization.find_by_provider_and_uid(auth_hash["provider"], auth_hash["uid"]) 
     if @authorization 
     render :text => "Welcome back #{@authorization.user.name}! You have already signed up." 
     else 
######line 12-> user = User.new :name => auth_hash["user_info"]["name"], :email => auth_hash["user_info"]["email"] 
     user.authorizations.build :provider => auth_hash["provider"], :uid => auth_hash["uid"] 
     user.save 

     render :text => "Hi #{user.name}! You've signed up." 
     end 
    end 

Я думаю, это означает, что мой массив информации пуст, и сужает меня до такой причины, что данные не сохраняются в моей базе данных.

Btw, я на шаге 6 следующая http://net.tutsplus.com/tutorials/ruby/how-to-use-omniauth-to-authenticate-your-users/

+0

ли вы когда-нибудь это исправить? У меня такая же проблема. – John

+1

Я только что получил эту работу, загрузив исходное приложение с этого сайта и исправляя некоторые вещи и добавляя в свои собственные ключи приложения и т. Д. Не уверен, какова фактическая сделка с учебником, но настройка приложения для примера работала для меня. – John

+0

Спасибо, Джон. Я ценю отзывы и решение. Я не получил работу, так как я был довольно занят, но я нашел несколько странных вещей, таких как хэш-информация пользователя Facebook, не включающая определенные переменные организованным образом. – Tony

ответ

2

Ok. Кажется, я вижу, где этот пример пошатнулся. В примере, который используется на вышеуказанном сайте, используется предыдущая версия omniauth, которая использовала «user_info» в качестве имени хэша. Новая версия omniauth версии 1.0 изменила это имя на «info» и разделила стратегии поставщика на отдельные драгоценные камни, поэтому вы должны указывать их отдельно в своем Gemfile (например: omniauth-facebook, omniauth-twitter и т. Д.). Поэтому вы больше не используете драгоценный камень «omniauth» в Gemfile.

https://github.com/intridea/omniauth/wiki/Upgrading-to-1.0