[ruby-on-rails] Rails 3使用Devise:如何允許某人使用他們的Facebook帳戶登錄?



Answers

我檢查了設計github頁面,看看他們在做什麼。 該項目進展非常快,因此它們支持facebook連接等。 查看OAuth2部分。 他們使用github作為例子,但對於facebook來說它們是相同的,他們提到了差異。 我認為這是要走的路,設計的第三方寶石不會像設計或軌道那樣快速移動。 乾杯。

哎呀這裡是鏈接Devise

編輯

當然我在這裡做了很少的編碼,大多數是默認的,所以這裡是:

創建一個新應用程序並將這些gem添加到gemfile中。

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

運行bundle install,然後這些命令將使您獲得基本的用戶身份驗證模型。

rails generate devise:install
rails generate devise User

在config / initializers / devise.rb中取消註釋/修改這些。 看看最後一段,你從Facebook獲取app_key和秘密。

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使用root:to =>“something#here”所以我創建了一個帶有索引操作的home控制器,並使用它來根據應用程序。 但沒關係。 我把它放在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>

設計幾乎照顧我們的一切。 你需要做的是從facebook獲取你的app_key和秘密(在devise.rb配置文件中使用)。 這個鏈接應該讓你去。 http://developers.facebook.com/setup

Question

我有一個使用Devise進行身份驗證的Rails 3應用程序。 現在我需要允許某人使用他們的Facebook帳戶登錄。 我認為這叫做Facebook Connect,但我也聽過Facebook Graph API這個詞,所以我不確定我要求哪一個。

為了將Facebook Connect與Devise集成,我需要做些什麼?

解:

這個問題現在很老了。 一年前,Devise v1.2引入了OmniAuth支持。 現在Devise處於v2.1(截至本文撰寫時),使用OmniAuth更加容易。 這是一個來自Devise wiki的精彩教程, 使用omniauth-facebook gem和Devise允許使用Facebook登錄

另外,請查看有關註冊應用程序和使用Facebook Graph API的精彩教程。




這篇博文對我有用。 看看吧。







Links