Heim  >  Fragen und Antworten  >  Hauptteil

Webhooks – Authentifizierungstyp-API-Schlüssel – Geheimname und Geheimwert – in PHP

<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粉545910687P粉545910687388 Tage vor482

Antworte allen(1)Ich werde antworten

  • P粉413307845

    P粉4133078452023-08-31 10:55:59

    所以其实很简单。互联网上没有示例,文档也很差,它更多地解释了 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
    }

    Antwort
    0
  • StornierenAntwort