【问题标题】:retrieve facebook album images in rails 4 using koala and omniauth-facebook使用 koala 和 omniauth-facebook 在 Rails 4 中检索 facebook 相册图像
【发布时间】:2015-03-09 04:58:17
【问题描述】:

我正在使用带有omniauth-facebook 的rails 4.2 来使用facebook 注册并计划使用koala 来检索current_user 的facebook 数据(专辑、朋友列表等)。在用户注册/登录时,我正在创建/更新用户详细信息,如下所示

def self.from_omniauth(auth)
  # Get 60 days auth token
  oauth = Koala::Facebook::OAuth.new(Rails.application.secrets.facebook['app_id'], Rails.application.secrets.facebook['app_secret'])
  new_access_info = oauth.exchange_access_token_info auth.credentials.token

  new_oauth_token = new_access_info['access_token']
  new_oauth_expires_at = DateTime.now + new_access_info['expires'].to_i.seconds

  where(auth.slice(:provider, :uid)).first_or_initialize.tap do |user|                                                                          
    user.provider = auth.provider
    user.uid = auth.uid
    user.name = auth.info.name
    user.password = Devise.friendly_token[0,20]
    #user.image = auth.info.image
    user.email = auth.info.email
    user.oauth_token = new_oauth_token
    user.oauth_expires_at = new_oauth_expires_at
    user.save!
  end
end

根据 koala 的 Graph API 部分,我们需要指定 访问令牌,我们可以通过 Facebook 的 Graph API Explorer 获得。我为我的应用程序创建了一个访问令牌,具有检索用户详细信息、喜欢、朋友和照片的权限。

一些控制台输出:

pry(main)> a.class
=> User
pry(main)> a.oauth_token
=> "CAAHTERFDSFSREWrWErwelrinwoerxwerxqw"
pry(main)> graph = Koala::Facebook::API.new a.oauth_token
=> #<Koala::Facebook::API:0x00000008198810 @access_token= "CAAHTERFDSFSREWrWErwelrinwoerxwerxqw", @app_secret=nil>
pry(main)> friends = graph.get_connections("me", "friends")
=> {...}
pry(main)> photos = graph.get_connections("me", "photos")
=> {...}
pry(main)> photos.count
=> 25
pry(main)> p = graph.get_object "me"
=> {"id"=>"10206089",
   "email"=>"prasad@yahoo.co.in",
   "first_name"=>"Prasad",
   "gender"=>"male",
   "last_name"=>"Surase",
   "link"=>"https://www.facebook.com/app_scoped_user_id/10206089/",
   "locale"=>"en_US",
   "name"=>"Prasad Surase",
   "timezone"=>5.5,
   "updated_time"=>"2014-12-14T06:12:07+0000",
   "verified"=>true}

我的问题是,我们能否检索 current_user 在特定日期范围内创建的照片。这可能吗?我需要每张图片的图片标题、图片喜欢和图片 cmets。

【问题讨论】:

标签: ruby-on-rails koala


【解决方案1】:

您可以使用sinceuntil 查询参数来指定日期范围:

/me/photos/uploaded?since=1402733742&amp;until=1408004142

使用考拉,我想应该是这样的:

photos = graph.get_connections("me", "photos/uploaded", since: 1402733742, until: 1408004142)

这会返回我从 2014 年 6 月 14 日到 2014 年 8 月 14 日的所有照片。

不过要小心:据我所知,Facebook 似乎限制了日期范围。您可能会收到一条错误消息,提示您尝试一次从太多天获取数据,因此,准备好将您的日期范围分成几块来执行您的请求。 我自己使用graph explorer 进行的测试表明,Facebook 对结果进行分页并返回允许分页的游标。您应该可以在 Koala 返回的集合上使用 next_page 来查看所有结果。

【讨论】:

    猜你喜欢
    • 2013-02-14
    • 1970-01-01
    • 1970-01-01
    • 2012-05-02
    • 1970-01-01
    • 2012-04-28
    • 1970-01-01
    • 2016-05-15
    • 1970-01-01
    相关资源
    最近更新 更多