我使用带有omniauth-facebook的rails 4.2来使用facebook注册并计划使用考拉来检索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
根据考拉的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的照片吗?这可能吗?我需要每张图片的图片标题,图片赞和图片评论。
答案 0 :(得分:1)
您可以使用since
和until
查询参数指定日期范围:
/me/photos/uploaded?since=1402733742&until=1408004142
使用考拉,我想这应该这样做:
photos = graph.get_connections("me", "photos/uploaded", since: 1402733742, until: 1408004142)
这将从14/06/2014到2014年8月14日返回我的所有照片。
小心但是:据我所知,Facebook似乎限制了日期范围。您可能会收到错误消息,说您曾尝试过多次获取数据,因此,请准备好以块的形式分割日期范围以执行请求。
我使用graph explorer进行的测试显示,Facebook对结果进行分页并返回允许分页的游标。您应该可以在Koala返回的集合中使用next_page
来查看所有结果。