我正在尝试为我们的注册系统写一个添加好友的步骤,并且我被要求实现类似于foursquare工作方式的东西。
它从Facebook上下载你的朋友,检查他们是否已经在foursquare网站上,然后询问你是否想要与他们联系。
实施此类功能的最佳方法是什么?
我已经看过FB JS SDK的例子,但我更喜欢更集成的方法。
由于 亚当
答案 0 :(得分:3)
我找到的最好方法是使用oauth和fb_graph gems设计(如指定的here和here)。我的版本有问题所以我的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
就是这样。希望它有所帮助。