Я хотел бы создать authTicket
для использования с Sinch Web SDK, как описано в документации (Аутентификация по вашему бэкэнду).
Для серверного кода, необходимого для этого, Sinch предоставляет как минимум два примера:
Первый шаг — это кодировка JSON. Однако, если я запускаю это в JavaScript или PHP соответственно, я получаю разные результаты:
JavaScript JSON.stringify(userTicket)
{
"applicationKey":"XXXXXXXXXXXXXXXX",
"identity":{"type":"username","endpoint":"johndoe"},
"created":"2017-04-12T12:34:56.789Z",
"expiresIn":86400
}
PHP json_encode($userTicket)
{
"identity":{"type":"username","endpoint":"johndoe"},
"expiresIn":86400,
"applicationKey":"XXXXXXXXXXXXXXXX",
"created":"2017-04-12T12:34:56.789Z"}`
(Пожалуйста, не обращайте внимания на пробелы, это связано с форматированием StackOverflow. Я спрашиваю о порядке ключей.)
Позже этот вывод должен перейти в хеш-функцию. Поскольку обе строки JSON имеют ключи в разном порядке, оба входа, возможно, не приведут к одинаковому хэшированному выводу.
Какой правильный алгоритм для вычисления authTicket, особенно когда дело доходит до части кодирования JSON?
Задача ещё не решена.
Других решений пока нет …