Я пытаюсь создать веб-крючок в Twilio.Независимо от того, что я пытаюсь, я получаю ответ {"message":"Invalid signature.","success":false,"error_code":"60000"}
Я пытался использовать как GuzzleHTTP, так и PHP CURL, чтобы попытаться увидеть, получаю ли я другой ответ.
Однако яЯ загрузил версию Node (https://github.com/AuthySE/webhooks-api) для тестирования, и я могу успешно создать веб-крючок с помощью приложения Node.
Я использую те же ключи в приложении Node, что и в PHPapp.
Вот как выглядит мой запрос:
public function createWebhook()
{
$api_signing_key = '<API_SIGNING_KEY>';
$post_url = 'https://api.authy.com/dashboard/json/application/webhooks';
$http_method = 'POST';
$nonce = $this->randomNumber(10) . '.' . $this->randomNumber(10);
$data = $nonce . '|' . $http_method . '|' . $post_url . '|';
$sig = hash_hmac('sha256', $data, $api_signing_key);
$encoded = base64_encode($sig);
$client = new Client(['headers' => [
'X-Authy-Signature' => $encoded,
'X-Authy-Signature-Nonce' => $nonce
]]);
try {
$response = json_decode($client->post($post_url,
[
'debug' => true,
'form_params' => [
'app_api_key' => '<APP_API_KEY>',
'access_key' => '<ACCESS_KEY>',
'name' => 'New Webhook',
'events' => [
'one_touch_request_responded'
]
],
])->getBody(), true);
} catch (RequestException $e) {
$response = $e->getMessage();
}
return $response;
}
// Only for reference to show how I am generating a
// random number for nonce
protected function randomNumber($length) {
$result = '';
for($i = 0; $i < $length; $i++) {
$result .= mt_rand(0, 9);
}
return $result;
}