【问题标题】:Add friends from facebook with Rails 3 + OmniAuth + FBGraph使用 Rails 3 + OmniAuth + FBGraph 从 facebook 添加好友
【发布时间】:2016-02-19 03:55:21
【问题描述】:

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

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

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

我看过 FB JS SDK 的示例,但我更喜欢集成度更高的方法。

谢谢 亚当

【问题讨论】:

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


    【解决方案1】:

    我发现最好的方法是使用带有 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'
    

    (我的配置已经很老了——devise latest 分支现在可能以更开箱即用的方式支持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
    

    就是这样。希望对您有所帮助。

    【讨论】:

    • 我知道这已经很老了,但是你把 facebook_user = ... FBGraph 部分放在哪里?
    • 在Controller或Model中(需要获取好友列表的地方)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-16
    相关资源
    最近更新 更多