Google Places API:next_page_token错误

use*_*300 13 google-places-api

我正在收集有关商店位置的信息.搜索是:

<?php
...
$url='https://maps.googleapis.com/maps/api/place/search/json?key=[my_key]&location=40.420989,-3.706812&radius=1000030&=&sensor=false';
$body=file_get_contents($url);
...
?>
Run Code Online (Sandbox Code Playgroud)

我没有问题地返回一个Json,并指出还有另一页结果.我将回来再打电话如下

<?php
...
$url2='https://maps.googleapis.com/maps/api/place/search/json?key=[my_key]&pagetoken=ClREAAAAQXKNHPVGCkTC_MdjSqi2T0KBDMWjEu4KF1Ylw1761Po-67AnNSp4zw0wXD4oocGpx4olSl4k2LyklJBl3mBF4VPmxp3IoOCHDRlXVmivaDsSEBuG_V1GvCH1gS5s0LCuy3EaFNXxUzzHhZ5ZRYNfeGHuqewR6Zk7&sensor=false';
$body=file_get_contents($url2);
...
?>
Run Code Online (Sandbox Code Playgroud)

如果我在第二次调用时运行它会出错

'status' - > INVALID_REQUEST

但是当我在结果中粘贴ulr2浏览器时是正确的.

我怎么解决它?

谢谢

dir*_*ten 48

它与请求之间的时间有关,如果你一个接一个地运行它们,pagetoken还没有效,你必须在连续请求之间等待几秒钟.

这是因为谷歌的许可条款不允许您一次获取所有结果并立即将它们全部返回给用户.您应该有一个用户操作要求更多结果,这会延迟几秒钟.


Ade*_*adi 9

睡眠(2)之间的请求将解决问题


小智 -2

第一个查询将生成第二页令牌。您只需在 uri 中添加“&pagetoken=tokenvalue”即可。

当然可以。没有其他选择。