为什么使用 next_page_token of google 放置 API 返回与第 1 页相同的结果?

Why using next_page_token of google places API returning same results as of 1st page?

我想要来自 google 个地点的地点信息,所以我使用了 "nearbysearch" API。 但它只返回第 20 位的信息。所以我使用 next_page_token 来获取第 2 页上的地点信息,但它仍然返回第 1 页上已经存在的地点信息。

  response=HTTParty.get("https://maps.googleapis.com/maps/api/place/nearbysearch/json?location="+params[:place][:latitude]+","+params[:place][:longitude]+"&radius="+params[:place][:radius]+"&types="+params[:place][:type]+"&key=AIzaSyAD6Vgkz7vo-nZLZp-xeNoPchOr7RepWEU")  

  receipt=JSON.parse(response.body)   

  @next_page_token=receipt['next_page_token']
  response2=HTTParty.get("https://maps.googleapis.com/maps/api/place/nearbysearch/json?location="+params[:place][:latitude]+","+params[:place][:longitude]+"&radius="+params[:place][:radius]+"&pagetoken=#{@next_page_token}&types="+params[:place][:type]+"&key=AIzaSyAD6Vgkz7vo-nZLZp-xeNoPchOr7RepWEU")

之所以发生这种情况,是因为这两个都是真的:

  1. 您请求的&pagetoken=参数不包含有效的页面标记(也许没有第二页结果,所以它只是一个空字符串? ).这是你的主要问题。另外,
  2. 您的第二个请求重复了所有参数,即使您不需要使用页面令牌也是如此。正如您所注意到的,原始请求 + 无效 pagetoken= 被视为原始请求:)

所以你应该:

  1. 手动验证 @next_page_token 是否符合您的预期并修复显示的内容。例如。至少你应该添加逻辑来处理响应没有 next_page_token
  2. 的情况
  3. 更改第二个请求以省略 keypagetoken 以外的所有参数,这样不必要的参数就不会掩盖您的主要错误。