新手问题 在 devise wiki 上看到一個讓我好奇的問題

xdxie · 2013年02月13日 · 最后由 doitian 回复于 2013年02月13日 · 2165 次阅读

出處:https://github.com/plataformatec/devise/wiki/OmniAuth%3a-Overview

class Users::OmniauthCallbacksController < Devise::OmniauthCallbacksController
  def facebook
    # You need to implement the method below in your model (e.g. app/models/user.rb)
    @user = User.find_for_facebook_oauth(request.env["omniauth.auth"], current_user)
  ....
end
end
def self.find_for_facebook_oauth(auth, signed_in_resource=nil)
  user = User.where(:provider => auth.provider, :uid => auth.uid).first
  unless user
    user = User.create(name:auth.extra.raw_info.name,
                         provider:auth.provider,
                         uid:auth.uid,
                         email:auth.info.email,
                         password:Devise.friendly_token[0,20]
                         )
  end
  user
end

請問他這樣設計的用意是什麼? find_for_facebook_oauth 參數傳 current_user 進去 但是 find_for_facebook_oauth 這個方法裡面完全沒用到這個傳進去的參數

这个例子中是单纯的创建新用户,所以不需要 signed_in_resource。如果你想登录的用户可以去关联 facebook 就需要进行处理了。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号