Ruby on rails 如何获取自某个时间段以来的所有连接
我试图在facebook页面上获取特定时间段以来的所有连接(交互)。我正在使用考拉宝石,并用“自:1.月.前.到我”过滤请求,这似乎很有效。然而,这给了我一次25个结果。如果我将限制改为446(似乎是最大值),效果会更好。但是…如果我使用.next_页面给出给定时间范围内的下一组结果,它只给出下一组结果,而不遵守时间范围 例如,假设我没有增加限制,每个请求有25个结果。我会这样做:Ruby on rails 如何获取自某个时间段以来的所有连接,ruby-on-rails,facebook,ruby-on-rails-3,facebook-graph-api,Ruby On Rails,Facebook,Ruby On Rails 3,Facebook Graph Api,我试图在facebook页面上获取特定时间段以来的所有连接(交互)。我正在使用考拉宝石,并用“自:1.月.前.到我”过滤请求,这似乎很有效。然而,这给了我一次25个结果。如果我将限制改为446(似乎是最大值),效果会更好。但是…如果我使用.next_页面给出给定时间范围内的下一组结果,它只给出下一组结果,而不遵守时间范围 例如,假设我没有增加限制,每个请求有25个结果。我会这样做: @api.get_connections(@fan_page_id, "feed", {since: 1.mont
@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个不是“自:1.月.前.至”。我有一个while循环在页面中循环,但我不知道在哪里停止,因为只要我一直打电话,它就会一直向我返回结果。下一页
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
请试试这些,我想它们管用
current = @api.get_connections(@fan_page_id, "feed", {since: 1.month.ago.to_i})
next = current.next_page
next = next.next_page
.....