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

时间:2013-10-10 02:20:01

标签: ruby-on-rails facebook devise

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

这是我在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或用户模型中添加一些内容?

1 个答案:

答案 0 :(得分:0)

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