2010-06-17 53 views
0

有很多Facebook + Rails解決方案,最值得注意的是Facebooker,但是這個和其他許多方面都與Rails 3不兼容。我目前使用Authlogic與我的應用進行身份驗證,並且我想讓用戶可以選擇Facebook登錄。我想找到讓FB和Authlogic一起走的最佳方式;現在我只爲Facebook寫了自己的Authlogic插件,但如果已經完成了,我不想重做別人的工作。有人知道這樣的事嗎?帶有Rails和Authlogic的Facebook圖形API - 首選方法?

回答

0

這個區域似乎在不斷變化。我很難用Rails 3建立它,因爲沒有主要的Ruby臉譜庫正式更新它,最新的沒有記錄。

我使用Rails 3的方式是使用Facebooker2和Mogli。我基本上採用了mogli + authlogic oauth控制器代碼posted here,並將其與Facebooker2的控制器和輔助方法結合使用。 Facebooker2和Mogli沒有任何文檔(我知道),但Facebooker2代碼相對簡單。

我還必須手動處理一些authlogic驗證,才能使它們僅觸發非Facebook註冊。下面是用戶模型中的所有特定authlogic代碼:

class User < ActiveRecord::Base 

    acts_as_authentic do |config| 
    config.validate_email_field = false 
    end 

    validates_length_of :email, :within => 6..100, :if => :is_not_fb_user? 
    validates_format_of :email, :with => Authlogic::Regex.email, :if => :is_not_fb_user? 
    validates_uniqueness_of :email, :if => :is_not_fb_user? 

    def is_fb_user? 
    return false if self.fb_uid.blank? || self.fb_uid == 0 || self.fb_at.blank? 
    return true 
    end 
    def is_not_fb_user?; !self.is_fb_user? end 

    def require_password? 
    if self.is_fb_user? 
     false 
    else 
     new_record? || password_changed? || send(crypted_password_field).blank? 
    end 
    end 
end 

可能有一些錯誤,我懷疑有一個更好的方式來處理這一點。

0

一位朋友爲我們的應用程序開發了這個gem,所以也許它對您的應用程序也很有用:http://github.com/pfracarolli/facebook-graph

+0

有沒有這個寶石的任何文檔可用? – 2010-08-17 22:12:51

0

使用Omniauth。這個問題上有一個railscast。我相信他,即使Authlogic使用它結合:

http://railscasts.com/episodes/235-omniauth-part-1

短短的幾行到您的SessionsController,並在配置/初始化/ omniauth.rb一個配置文件的幾行,你或多或少完成。

+1

在引言中明確指出:「在這一集中,我們開始將它與* Devise *進行整合。」 – RocketR 2011-08-18 21:48:06