Создание параметра шестнадцатеричной строки в строке запроса

Мне нужно создать строку запроса со следующей структурой:
https://api.company.com/api/hello.json?app_id=имя $&хэш = $ хэш

Переменная $ hash должна соответствовать SHA1 текущей строки запроса, связанной с моим клиентским секретом.

Я проверил свои учетные данные API в консоли, запустив следующий скрипт bash (который дает мне правильный ответ)

$ challenge=$(curl -s "http://www.company.com/api/hello.json?app_id=$name" | head -1 | sed 's/.*"challenge": *"\([0-9]*\)".*/\1/')
$ hash=$(printf $challenge$key | openssl dgst -sha1 | sed 's/^.*\([a-f0-9]\{40\}\).*$/\1/')
$ curl "http://www.company.com/api/hello.json?app_id=$name&hash=$hash"

Однако, когда я пытаюсь воссоздать переменную $ hash программно с PHP, аутентификация завершается неудачно из-за неверного параметра hash.

Для создания параметра $ hash я использую:

$hash = sha1($challenge . $key);

Но, очевидно, я что-то здесь упускаю. Я предполагаю выражение в скрипте bash:

a-f0-9]\{40\}\).*$/\1/

проверяет, является ли строка шестнадцатеричной строкой из 40 символов, но я не уверен, как интегрировать это в мой код PHP.

Если я проверю значение переменной $ challenge в консоли, я получу 9-значное числовое значение, например: 244971205, тогда как та же переменная в моем PHP-скрипте имеет строковое значение. Может ли это быть причиной того, что мой параметр $ hash неправильно отформатирован?

Стоит отметить, что если я использую значение переменной $ hash, то получаю, запустив

echo "$hash"

в консоли прямо в моей строке запроса вызов API успешно завершен, но я хочу получить то же значение программно.

Был бы очень признателен, если бы кто-то мог указать мне в правильном направлении.

0

Решение

Оказалось, я слишком усложнял вещи. Что мне действительно нужно было сделать, чтобы получить правильное значение для $challenge переменная должна была проанализировать данные JSON с json_decode и после этого просто получить доступ к свойству, которое содержит числовое значение, как это $challenge = $obj['object']['property']

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]