根据Ryan Bates screencast
我正在将omniauth的Facebook身份验证添加到我的应用程序中身份验证控制器中的create function存在问题。 create函数应该处理facebook回调(看起来很好)。
日志文件中的错误是:
NoMethodError(未定义的方法 “身份验证”为nil:NilClass)
错误是指身份验证控制器中create function中的这一行:
current_user.authentications.find_or_create_by_provider_and_uid(auth ['provider'],auth ['uid'])
您认为这是什么问题?
谢谢,
乌迪德
答案 0 :(得分:4)
问题是您在尝试进行身份验证时未登录,因此current_user为nil。登录然后进行身份验证,您将被重定向到身份验证索引页面。这就是他在railscast中做到的方式。在下一集中,他解决了未登录用户的问题。
答案 1 :(得分:1)
您的current_user
为零,因此当您尝试访问nil对象上的身份验证时,会收到您看到的错误消息。
您需要修复current_user
方法。
答案 2 :(得分:0)
我也有同样的问题,但它已经解决了。 抛出此错误的原因是AuthenticationController的create操作期望有当前登录的用户并尝试为该用户查找或创建新的身份验证。由于我们在没有首先使用用户名和密码登录的情况下尝试进行身份验证,因此current_user变量将为nil。
点击链接解决问题http://railscasts.com/episodes/236-omniauth-part-2?view=asciicast