Маяк зарегистрирован, но в ответе указан неверный UID

Я успешно зарегистрировал маяк с помощью Google Proximity API, но в ответе указан другой UID

URL запроса https://proximitybeacon.googleapis.com/v1beta1/beacons:register

Запрос

{
    "advertisedId": {
        "type": "EDDYSTONE",
        "id": "0x2f234454f4911ba9ffb6"
    },
    "status": "ACTIVE",
    "latLng": {
        "latitude": 51.4935657,
        "longitude": -0.1465538
    }
}

отклик

{
  "beaconName": "beacons/3!d31d9fdb7e38e787f8f75d5b6bd7df6f",
  "advertisedId": {
    "type": "EDDYSTONE",
    "id": "0x2f234454f4911ba9ffbw=="
  },
  "status": "ACTIVE",
  "latLng": {
    "latitude": 51.4935657,
    "longitude": -0.14655379999999998
  }
}

Если вы внимательно заметите, UID в ответе не совпадает с UID в запросе POST. Кроме того, я попробовал https://proximitybeacon.googleapis.com/v1beta1/beacons?q=status:active GET и все еще вижу немного другой UID.

1 ответ

Я предполагаю, что строки, которые есть в вашем коде выше, на самом деле не то, что отправляется, потому что они вообще не должны работать.

Существует проблема, когда: если вы base64 кодируете шестнадцатеричное представление beaconID, а НЕ двоичное представление. Похоже, что сервер ошибочно принял бы это, но интерпретировать это по-другому. Это будет исправлено в ближайшее время.

Итак, вместо того, чтобы делать это:

var b64id = Base64Encode("abcdef0123456789abcdef0123456789");

Вы хотите делать:

var b64id = Base64Encode(HexToBinary("abcdef0123456789abcdef0123456789"));

Т.е.

если у вас есть шестнадцатеричная строка для идентификатора: abcdef0123456789abcdef0123456789, убедитесь, что ваш код выдает строку base64: q83vASNFZ4mrze8BI0VniQ== - это то, что вы должны отправить сервер в "id" поле.

BeaconID имеет длину 16 байтов, и будет отображаться как шестнадцатеричная строка из 32 символов. Результирующая строковая кодировка base64 для этого beaconID должна быть длиной около 23-24 символов.

Надеюсь, это поможет.

Другие вопросы по тегам