Rails 3 с использованием Devise: как разрешить кому-либо входить в систему с использованием своей учетной записи Facebook?

У меня есть приложение Rails 3, использующее Devise для аутентификации. Теперь мне нужно разрешить кому-либо войти в систему, используя свою учетную запись Facebook. Я думаю, что это называется Facebook Connect, но я также слышал термин Facebook Graph API, поэтому я не уверен, какой из них я запрашиваю.

Что мне нужно сделать, чтобы интегрировать Facebook Connect с Разработать?

Решение:

Этот вопрос сейчас довольно старый. Год назад в Devise v1.2 появилась поддержка OmniAuth . Сейчас Devise версии 2.1 (на момент написания этой статьи) и использование OmniAuth стало еще проще. Вот отличное руководство из вики Devise на с использованием гема omniauth-facebook с Devise, чтобы разрешить вход через Facebook .

Также ознакомьтесь с этим великолепным учебным пособием по регистрации приложения и работе с API Graph Facebook .

65
задан Andrew 29 June 2012 в 20:04
поделиться

2 ответа

http://github.com/grimen/devise_facebook_connectable

Эта жемчужина на github довольно проста. Стоит попробовать!

3
ответ дан 24 November 2019 в 15:28
поделиться

Я проверил страницу devise на github, чтобы узнать, чем они занимаются.Этот проект развивается довольно быстро, и, как оказалось, среди прочего у них есть поддержка Facebook Connect. Ознакомьтесь с разделом, посвященным OAuth2. Они используют github в качестве примера, но это было бы то же самое для facebook, и они упоминают различия. Я думаю, что это правильный путь, сторонние драгоценные камни для devise не движутся так быстро, как devise или rails. Ваше здоровье.

К сожалению, вот ссылка http://github.com/plataformatec/devise

Изменить

Конечно, я очень мало кодировал здесь, в основном использовал значение по умолчанию, так что вот:

Создать новое приложение и добавьте эти драгоценные камни в gemfile.

gem 'devise', :git => 'git://github.com/plataformatec/devise.git'
gem 'oauth2', :git => 'git://github.com/intridea/oauth2.git'

Запустите установку пакета, после чего эти команды помогут вам перейти к базовой модели аутентификации пользователя.

rails generate devise:install
rails generate devise User

В config/initializers/devise.rb раскомментируйте/измените их. Посмотрите на последний абзац, где вы берете app_key и secret от facebook.

config.oauth :facebook, 'app_key', 'secret',
    :site              => 'https://graph.facebook.com',
    :authorize_path    => '/oauth/authorize',
    :access_token_path => '/oauth/access_token'

Это должна быть ваша модель пользователя.

class User < ActiveRecord::Base
  # Include default devise modules. Others available are:
  # :token_authenticatable, :confirmable, :lockable, :timeoutable and :oauthable
  devise :database_authenticatable, :oauthable

  # Setup accessible (or protected) attributes for your model
  attr_accessible :email, :password, :password_confirmation, :remember_me

  def self.find_for_facebook_oauth(access_token, signed_in_resource=nil)
    # Get the user email info from Facebook for sign up
    # You'll have to figure this part out from the json you get back
    data = ActiveSupport::JSON.decode(access_token)

    if user = User.find_by_email(data["email"])
      user
    else
      # Create an user with a stub password.
      User.create!(:name => data["name"], :email => data["email"], :password => Devise.friendly_token)
    end
  end
end

Devise использует корень :to => "something#here", поэтому я создал домашний контроллер с действием index и использовал его для рутирования приложения. Но неважно это. Я поместил это в layout/application.html.erb, чтобы у меня были основные маршруты sign_n sign_out.

<span>
  <%- if user_signed_in? %>
    <%= "Signed in as #{current_user.full_name}. Not you?" %>
    <%= link_to 'Sign out', destroy_user_session_path %>
  <%- else %>
    <%= link_to 'Sign in', new_user_session_path %>
  <%- end %>
</span>

Devise позаботится обо всем остальном за нас. Что вам нужно сделать, так это получить свой app_key и секрет из facebook (используется в конфигурационном файле devise.rb). Эта ссылка должна вас заинтересовать. http://developers.facebook.com/setup

54
ответ дан 24 November 2019 в 15:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: