我按照 Ryan Bates 的/RailsCasts 教程进行 cookie 登录并提醒我正在构建的应用程序中的功能。
[参考:http://railscasts.com/episodes/274-remember-me-reset-password?view=comments] 我想为同一个应用程序介绍他的 OmniAuth 功能。
[参考:http://railscasts.com/episodes/235-omniauth-part-1] 我没有使用设计。我正确加载 Twitter 应用程序页面,重定向回我的应用程序时发生错误。我在 Twitter 中正确设置了回调 URL。
undefined method "authentications" for nil:NilClass
OmniAuth 和我的 authentications_controller 出现错误。具体来说,我的控制台显示:
NoMethodError (undefined method authentications for nil:NilClass):app/controllers/authentications_controller.rb:9:in create'.
这是身份验证控制器代码:
class AuthenticationsController < ApplicationController
def index
authentications = Authentication.all
end
def create
auth = request.env["omniauth.auth"]
current_user.authentications.create(:provider => auth['provider'], :uid => auth['uid'])
flash[:notice] = "Authentication was successful."
redirect_to authentications_url
end
这是我的应用程序控制器中的 current_user 辅助方法。
private
def current_user
@current_user ||= User.find_by_auth_token!(cookies[:auth_token]) if cookies[:auth_token]
end
helper_method :current_user
用户有许多身份验证。身份验证属于用户。
我想让 OmniAuth 与 Twitter 一起工作,这样用户就可以使用他们的 Twitter 帐户登录,避免我在维护我的 current_user 代码时收到的错误
帮助表示赞赏。