4

根据 Ryan Bates截屏视频,我正在向我的应用程序添加带有omniauth 的 Facebook 身份验证

身份验证控制器中的 create 函数存在问题。create 函数应该处理 facebook 回调(这似乎很好)。

日志文件中的错误是:

NoMethodError(nil:NilClass 的未定义方法“身份验证”)

错误是指身份验证控制器中的 create 函数中的这一行:

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

你认为是什么问题?

谢谢,

奥德

4

3 回答 3

4

问题是当您尝试进行身份验证时您没有登录,因此 current_user 为 nil。登录然后进行身份验证,您将被重定向到身份验证索引页面。这就是他在railscast中的做法。在下一集中,他解决了未登录的用户。

于 2011-03-28T12:53:43.840 回答
1

current_user是 nil,因此当您尝试访问 nil 对象上的身份验证时,您会收到您所看到的错误消息。

你需要修正你的current_user方法。

于 2011-03-09T14:53:47.667 回答
0

我也有同样的问题,但是已经解决了。引发此错误的原因是 AuthenticationController 的 create 操作期望有一个当前登录的用户并尝试为该用户查找或创建新的身份验证。由于我们尝试在没有先使用用户名和密码登录的情况下进行身份验证,因此 current_user 变量将为 nil。

按照链接解决问题http://railscasts.com/episodes/236-omniauth-part-2?view=asciicast

于 2012-02-06T15:01:15.857 回答