0

この時点で、ユーザーは omniauth-facebook gem を使用して Facebook アカウントを使用して私の Web サイトにログインできます。また、ユーザーが投稿時にもう少し匿名性を維持できるように、devise のような gem を使用してアカウントを作成する方法を実装したいと考えています。

これが私の session_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

これはdevise gemを追加するだけで解決できるものですか、それともsessions_helperまたはユーザーモデルにいくつか追加する必要がありますか?

4

1 に答える 1

0

Devise には、さまざまな omniauth-* gem をすべて使用できる機能が組み込まれています。あなたは間違いなくそれを調べるべきです。 https://github.com/plataformatec/devise/wiki/OmniAuth%3A-概要

于 2013-10-10T03:21:04.740 に答える