2011-12-14 4 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 내가 좋아 http://net.tutsplus.com/tutorials/ruby/how-to-use-omniauth-to-authenticate-your-users/

+0

수정 했습니까? 나는 똑같은 문제를 겪고있다. – John

+1

난 그 사이트에서 소스 애플 리케이션을 다운로드하고 몇 가지 물건을 수정하고 내 자신의 애플 리케이션 키를 넣어 등이 작업을 가지고있어. 실제 거래가 튜토리얼과 무엇인지 모르지만, 예제 애플 리케이션을 조정하면 나를 위해 일했다. – John

+0

감사합니다. 의견과 해결책에 감사드립니다. 내가 꽤 바빴던 이래로 일하게하지는 않았지만, 조직적인 방식으로 특정 변수를 포함하지 않는 Facebook의 사용자 정보 해시와 같은 이상한 것을 발견했습니다. – Tony

답변

2

다음 6 단계에 있어요. 나는이 예가 어디서 잘못되었는지 보았다. 위의 사이트에서 사용 된 예제는 해시 이름으로 "user_info"를 사용하는 이전 버전의 omniauth를 사용하고 있습니다. 새로운 1.0 버전의 omniauth는이 이름을 "info"로 변경하고 공급자 전략을 별도의 보석으로 나눠서 Gemfile에서 별도로 지정해야합니다 (예 : omniauth-facebook, omniauth-twitter 등). 따라서 Gemfile에서 단순한 'omniauth'젬을 더 이상 사용하지 마십시오.

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

관련 문제