Webhooks – Authentifizierungstyp-API-Schlüssel – Geheimname und Geheimwert – in PHP
P粉545910687
P粉545910687 2023-08-30 18:46:16
0
1
582
<p>Ich versuche, einen Webhook mithilfe eines API-Schlüssels (geheimer Name und geheimer Wert) zu authentifizieren.所以我制作了两个文件:</p> <p>webhook.php:</p> <pre class="brush:php;toolbar:false;"><?php include('webhook-api-key.php'); // Den Anfragetext aus der Webhook-POST-Anfrage abrufen if ($http_status_code === 200){ $request_body = file_get_contents('php://input'); // Konvertieren Sie den Anforderungstext von JSON in ein PHP-Objekt $request_data = json_decode($request_body); // Die Kontakteigenschaften aus den Anfragedaten extrahieren $contact_properties = $request_data->properties; // Den Wert der E-Mail-Eigenschaft extrahieren $email = $contact_properties->email->value; // Den Eigenschaftswert des Vornamens extrahieren $first_name = $contact_properties->firstname->value; // Den Eigenschaftswert des Nachnamens extrahieren $last_name = $contact_properties->lastname->value; // Machen Sie etwas mit den Kontaktdaten, z. B. das Hinzufügen zu einer Datenbank oder das Versenden einer E-Mail-Benachrichtigung // Zum Beispiel: $contact_data = array( 'email' => $E-Mail, 'Vorname' => $vorname, 'last_name' => $last_name ); // Fügen Sie die Kontaktdaten einer Datenbank hinzu oder senden Sie eine E-Mail-Benachrichtigung usw. // Eine HTTP-Antwort an HubSpot senden, die angibt, dass der Webhook erfolgreich empfangen und verarbeitet wurde http_response_code(200); } ?></pre> <p> und webhook-api-key.php:</p> <pre class="brush:php;toolbar:false;"><?php $endpoint_url = 'https://.../hubspot/webhook.php'; // Richten Sie den geheimen Namen und den geheimen Wert des API-Schlüssels ein $api_key_secret_name = 'word'; $api_key_secret_value = 'anther_word'; // Richten Sie die HTTP-POST-Anforderungsheader ein $headers = array( 'Inhaltstyp: application/json', 'Autorisierung: Inhaber '.$api_key_secret_value ); // Richten Sie den HTTP-POST-Anfragetext ein $body = array( 'api_key' => $api_key_secret_value ); // Senden Sie die HTTP-POST-Anfrage an die Webhook-Endpunkt-URL $ch = curl_init($endpoint_url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($body)); $response = curl_exec($ch); // Auf Fehler prüfen if(curl_errno($ch)) { $error_message = curl_error($ch); echo 'Fehler: '.$error_message; } // Den Statuscode der HTTP-Antwort abrufen $http_status_code = curl_getinfo($ch, CURLINFO_HTTP_CODE); // Schließe die HTTP-POST-Anfrage curl_close($ch); // Behandeln Sie die Webhook-Antwort if ($http_status_code === 200) { echo 'Webhook erfolgreich authentifiziert.'; } anders { echo 'Webhook-Authentifizierung fehlgeschlagen mit HTTP-Statuscode: ' . $http_status_code; } ?></pre> <p>在 Hubspot ist eine Website mit der Bezeichnung „https://.../hubspot/webhook.php“.</p> <p>Ist das in Ordnung? Ich frage, denn als ich versuchte, es zu testen, hat es meinen Server zerstört und ich kann im Internet kein Beispiel finden, das diese Art der Authentifizierung verwendet. </p> <p>Vielen Dank! </p>
P粉545910687
P粉545910687

Antworte allen(1)
P粉413307845

所以其实很简单。互联网上没有示例,文档也很差,它更多地解释了 Hubspot 签名而不是 API 密钥。 我最终明白了它是如何工作的,这是工作代码:

$expectedSecretName = 'word'; // Replace with your expected secret name
$expectedSecretValue = 'another_word'; // Replace with your expected secret value

$requestBody = file_get_contents('php://input');
$data = json_decode($requestBody);

    if($_SERVER['HTTP_WORD'] == $expectedSecretValue){
//do something with values
$email = $data->email;
$firstname= $data->firstname;
$lastname= $data->lastname;
}
else{
//not from Hubspot
}
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage