我试图在特定时间段内在Facebook页面上获取所有连接(交互)。我正在使用考拉宝石并使用“since:1.month.ago.to_i”过滤请求,这似乎工作正常。但是,这一次给了我25个结果。如果我将限制更改为446(看起来最大),效果更好。但是......如果我使用.next_page在给定的时间范围内给出下一组结果,它只是给我一组下一组结果而不遵守时间范围。
例如,假设我没有增加限制,每个请求有25个结果。我做了类似的事情:
@api.get_connections(@fan_page_id, "feed", {since: 1.month.ago.to_i})
我们假设有30个结果,第一个请求得到25(默认限制)。那么,如果我这样做:
@api.get_connections(@fan_page_id, "feed", {since: 1.month.ago.to_i}).next_page
而不是返回最后5个结果,它返回25个,其中20个不是“since:1.month.ago.to_i”。我有一个循环遍历页面,但我不知道在哪里停止,因为它只是不断返回结果给我,无论什么,只要我一直打电话.next_page。
这是我的代码:
def perform(fan_page_id, pagination_options = {})
@since_date = pagination_options[:since_date] if pagination_options[:since_date]
@limit = pagination_options[:limit] if pagination_options[:limit]
@oauth = Koala::Facebook::OAuth.new
@api = Koala::Facebook::API.new @oauth.get_app_access_token
fb_page = @api.get_object(fan_page_id)
@fan_page_id = fb_page["id"]
# Collect all the users who liked, commented, or liked *and* commented on a post
process_posts(@api.get_connections(@fan_page_id, "feed", {since: @since_date})) do |post|
## do stuff based on each post
end
end
private
# Take each post from the specified feed and perform the provided
# code on each post in that feed.
#
# @param [Koala::Facebook::API::GraphCollection] feed An API response containing a page's feed
def process_posts(feed, options = {})
raise ArgumentError unless block_given?
current_feed = feed
begin
current_feed.each { |post| yield(post) }
current_feed = current_feed.next_page
end while current_feed.any?
end
答案 0 :(得分:0)
current = @api.get_connections(@fan_page_id, "feed", {since: 1.month.ago.to_i})
next = current.next_page
next = next.next_page
.....
请尝试这些,我认为它们有效。