I am trying to register my beacon on OAuth2.0 Playground. When I am trying to register my beacon, it gives me following error:
{ "error": {
"status": "INVALID_ARGUMENT",
"message": "Invalid AdvertisedId id bytes length",
"code": 400 }
}
I am sending a POST request to https://proximitybeacon.googleapis.com/v1beta1/beacons:register with following application/json body:
{
"advertisedId": {
"type": "EDDYSTONE",
"id": "ZWRkMWViXWFjMDRlNWRlZmEwNTdkMGU3ZDAwMmQ4YmM="
},
"status": "ACTIVE",
}
I am calculating advertiseID of beacon by this:
InstanceID: e61bdd5c2a9a
Namespace: edd1ebfac04e5defa017
I am creating the advertiseId by this method:
[1] Concatenate Namespace+Instance. => edd1ebfac04e5defa017e61bdd5c2a9a
[2] Convert it to byte stream using following code:
byte[] message = "edd1ebfac04e5defa017e61bdd5c2a9a".getBytes(StandardCharsets.UTF_8);
[3] Then convert it to Base64 using following code:
String encoded = Base64.getEncoder().encodeToString(message);
Now encoded is our advertisedId which is ZWRkMWViXWFjMDRlNWRlZmEwNTdkMGU3ZDAwMmQ4YmM=
Can anyone help me?
This is a reasonably common problem with converting between the hex values for the beacon ID and the actual underlying binary values for these.
The base64 string
"ZWRkMWViXWFjMDRlNWRlZmEwNTdkMGU3ZDAwMmQ4YmM="is actually the base64 encoding of the text hex string"edd1ebfac04e5defa017e61bdd5c2a9a". But what you really need to do is base64 encode the binary values underlying this hex string.In Node.jS, for example:
So, as you can see, you should be getting a base64 string that's roughly 24 bytes in length.
So, your conversion function should be something along the following lines: