使用Rails 3 + OmniAuth + FBGraph添加来自facebook的朋友

时间:2011-10-14 13:31:38

标签: ruby-on-rails ruby-on-rails-3 facebook-graph-api facebook

我正在尝试为我们的注册系统写一个添加好友的步骤,并且我被要求实现类似于foursquare工作方式的东西。

它从Facebook上下载你的朋友,检查他们是否已经在foursquare网站上,然后询问你是否想要与他们联系。

实施此类功能的最佳方法是什么?

我已经看过FB JS SDK的例子,但我更喜欢更集成的方法。

由于 亚当

1 个答案:

答案 0 :(得分:3)

我找到的最好方法是使用oauth和fb_graph gems设计(如指定的herehere)。我的版本有问题所以我的gemfile配置如下所示:

gem 'devise', :git => 'git://github.com/plataformatec/devise.git'
gem 'omniauth', '>=0.2.0.beta'
gem 'oa-oauth', :require => 'omniauth/oauth'
gem 'fb_graph'

(我的配置非常陈旧 - 设计最新的分支现在可以以更开箱即用的方式支持omniauth。)

我的设计初始化程序:

config.omniauth :facebook_publish, "APP_ID", "APP_SECRET"

在您的用户模型中:

devise :omniauthable

def self.find_for_facebook_oauth(access_token, signed_in_resource=nil)
  data = access_token['extra']['user_hash']
  if user = User.find_by_email(data["email"])
    user
  else # Create a user with a stub password. 
    User.create(:email => data["email"], :password => Devise.friendly_token[0,20]) 
  end
end

为了Facebook连接 - 转到路径:

user_omniauth_authorize_path(:facebook)

基本上,这就是连接所需的一切。为了得到我现在使用的图表:

 facebook_user = FbGraph::User.new('me', :access_token => access_token['credentials']['token']).fetch

对于朋友们:

facebook_user.friends

就是这样。希望它有所帮助。