使用Rails 3 + OmniAuth + FBGraph从facebook添加好友



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

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

实现这种功能的最好方法是什么?

我已经看到了FB JS SDK的例子,但是我更喜欢一个更集成的方法。

谢谢亚当

我发现最好的方法是使用带有oauth和fb_graph gems的设计(如这里和这里指定的)。我有一个版本问题,所以我的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'

(我的配置相当旧——可能最新的分支现在以一种更开箱即用的方式支持全功能)

my design initializer:

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

在你的User模型中:

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连接,请转到path:

user_omniauth_authorize_path(:facebook)

基本上,这就是连接所需的全部内容。为了得到图形,我现在使用:

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

对于朋友:

facebook_user.friends

就是这样。

最新更新