Google Proximity API возвращает внутреннюю ошибку 500 в запросе pageToken

Я пытаюсь перечислить количество маяков, зарегистрированных с помощью моего ключа OAuth, но получаю только 10 за раз. Я структурирую свой HTTP-запрос следующим образом:

https://proximitybeacon.googleapis.com/v1beta1/beacons

Я пытался установить maxResults больше, чем общее количество полученных маяков (?maxResults=20), но это всегда возвращает ошибку 400 Bad Request (maxResults неизвестен). Когда я пытаюсь использовать pageToken=[KNOWN NEXT PAGE TOKEN], я получаю внутреннюю ошибку 500.

Без возможности использовать любой из них я не могу видеть дальше своих первых 10 маяков. Любая помощь будет принята с благодарностью!

РЕДАКТИРОВАТЬ: Согласно этому документу, похоже, что эти параметры недоступны для API близости. Я не уверен, что это правильно, потому что это означало бы, что невозможно перечислить больше, чем первые 10 возвращенных маяков.


person avgrammer    schedule 04.02.2016    source источник


Ответы (3)


Правильный способ получить следующую страницу результатов — использовать параметр pageToken, как вы описываете. Хотя я считаю, что видел эту работу раньше, я убедился, что API в настоящее время возвращает ошибку 500 для этого. (См. результаты моего теста ниже.) Похоже, это проблема на стороне сервера.

curl 'https://proximitybeacon.googleapis.com/v1beta1/beacons?pageSize=3' -H 'Authorization: Bearer MY_SECRET_OAUTH_TOKEN_HERE'
{
  "beacons": [
    {
      ...
    },
    {
      ...
    },
    {
      ...
    }
  ],
  "nextPageToken": "Civ55nT/+//+zN7Pzs/Nz8zPy8/Kz8nPyM/Hz8bPns+dz5zPm8+ayMmdnf/+EAMhko+M85V85JMx00LwZ+bdJe8xuNeGz7eSTJAxP86ZtGulO0o5AQAEAIsZAABQAFoLCcck85hsjQ0JEAE",
  "totalCount": "5"
}

$ curl 'https://proximitybeacon.googleapis.com/v1beta1/beacons?pageSize=3&pageToken=Civ55nT/+//+zN7Pzs/Nz8zPy8/Kz8nPyM/Hz8bPns+dz5zPm8+ayMmdnf/+EAMhko+M85V85JMx00LwZ+bdJe8xuNeGz7eSTJAxP86ZtGulO0o5AQAEAIsZAABQAFoLCcck85hsjQ0JEAE' -H 'Authorization: Bearer MY_SECRET_OAUTH_TOKEN_HERE'
{
  "error": {
    "code": 500,
    "message": "Internal error encountered.",
    "status": "INTERNAL"
  }
}

```

person davidgyoung    schedule 05.02.2016
comment
Спасибо, Дэвид. Учитывая относительную редкость людей, использующих этот API, я предполагаю, что это не будет приоритетом для команды, но я посмотрю, смогу ли я найти, где отправить запрос в Google. - person avgrammer; 06.02.2016
comment
Тем временем я попытался использовать параметр pageSize, чтобы посмотреть, смогу ли я увеличить количество возвращаемых результатов, чтобы оно равнялось общему количеству возможных результатов. Это сработало для меня как обходной путь вместо maxResults. - person avgrammer; 06.02.2016
comment
Я попытался с pageSize=10000, так как количество записанных маяков на платформе близости примерно такое же, но я получил только первые 1000 элементов. Но на этом веселье не заканчивается, если я попытаюсь снова вызвать API с параметром pageToken, то получаю ошибку 400. - person Nicocube; 10.05.2016

Потратив часы на эту проблему (другая проблема с отправкой почтового запроса с пустым телом запроса для активации/деактивации маяков...), моя команда решила использовать невероятный Клиент Google Proximity Beacon API, который решает все эти проблемы и дает вам гораздо лучший опыт, модели и функции.

Обратите внимание, что при листинге все еще могут быть некоторые проблемы с большим листингом и маленькими маяками по страницам: 20 000 маяков, 100 на странице, 1000 симуляций ==> ~80% выполнено

person Vladk-el    schedule 19.10.2016

При разработке пользовательского клиента я столкнулся с той же ошибкой 500, потому что pageToken, предоставленный в json, не является безопасным для URL-адреса: вам необходимо закодировать токен в URL-адресе, прежде чем предоставлять его в качестве параметра URL-адреса.

Тогда пейджинг работал ненадежно: случайные 400 ошибок после нескольких маленьких страниц (pageSize 10-100) или второй большой страницы (pageSize 1000).

Теперь используется официальный Java-клиент с теми же учетными данными Oauth2 I. может надежно перебирать более 20 000 маяков (с размером страницы 1000), поэтому я, вероятно, что-то пропустил с кодировкой параметров, и API работает.

person lampe    schedule 17.10.2016