Ключ API, сгенерированный с использованием md5, прекрасно работает вне WordPress. При использовании точно такого же кода в WordPress ключ вызывает ошибку «не авторизовано».
Я взаимодействую с API, который требует генерации ключа, как показано ниже. Для тестирования я использовал почтальон и песочницу php: http://sandbox.onlinephpfunctions.com/
$key = '12345';
$timestamp = gmdate('U');
$signature = md5( $key . '6789' . $timestamp );
$url = "https://my-api.com/v1&signature={$signature}&key={$key}";
echo $url;
В песочнице PHP, если я выведу $ url и поместу его в свой браузер, я получу успешное возвращение с объектом. Если я получаю тот же $ url из моей сборки WordPress и вставляю его в браузер, я получаю следующее сообщение:
{"status": "fail", "data": "not authorised"}
Я сравнил каждый символ в URL, сгенерированных из обоих источников. Единственная разница - это подпись $. Сигнатура, сгенерированная вне WordPress, отлично работает, а подпись из WordPress не работает. Каждый URL представляет собой строку из 32 символов, как и ожидалось.
Я исследовал, генерирует ли Wordpress хеши md5 по-другому, но не нашел много информации. Надеясь на некоторую ясность.