让用户使用Facebook登录或创建帐户

此时用户可以使用omniauth-facebook gem的facebook帐户登录我的网站。 我还想为用户实现一种方法,即使用类似设计的gem创建一个帐户,这样他们在发布时可以保持更加匿名。

这是我在sessions_controller中的内容

class SessionsController < ApplicationController def create user = User.from_omniauth(env["omniauth.auth"]) session[:user_id] = user.id redirect_to root_url end def destroy session[:user_id] = nil redirect_to root_url end end 

然后我的用户模型

 class User < ActiveRecord::Base include SessionsHelper def self.from_omniauth(auth) where(auth.slice(:provider, :uid)).first_or_initialize.tap do |user| user.provider = auth.provider user.uid = auth.uid user.name = auth.info.name user.oauth_token = auth.credentials.token user.oauth_expires_at = Time.at(auth.credentials.expires_at) user.save! end end has_many :stories end 

这是我可以通过添加设计gem来解决的问题,还是我需要在我的sessions_helper或用户模型中添加一些内容?

Devise具有内置function,可以使用所有各种omniauth- *gem。 你一定要仔细研究它。 https://github.com/plataformatec/devise/wiki/OmniAuth%3A-Overview