我設置omniauth爲設計使用在其網站上的說明進行https://github.com/plataformatec/devise/wiki/OmniAuth:-Overview設計 - 合併OAuth的現有帳戶
我現在想讓它已經有一個帳戶,以透明地與自己的谷歌賬戶登錄的用戶:如果谷歌帳戶使用與之前註冊的用戶相同的電子郵件地址,則該網站應使用該帳戶登錄該用戶。
我只是在鏈接修改的建議代碼如下:
def self.from_omniauth(auth)
user = User.find_by(email: auth.info.email)
if user
user.skip_confirmation!
user.provider = auth.provider
user.uid = auth.uid
user.name = auth.info.name
return user
end
where(auth.slice(:provider, :uid)).first_or_create do |user|
user.skip_confirmation!
user.provider = auth.provider
user.uid = auth.uid
user.email = auth.info.email
user.password = Devise.friendly_token[0,20]
user.name = auth.info.name
end
end
它似乎做工精細,雖然我不知道如果這個代碼引入了,我不知道有任何風險。設計對我來說是一種黑盒子。