Maison  >  Questions et réponses  >  le corps du texte

Webhooks - Clé API de type d'authentification - Nom secret et valeur secrète - en PHP

<p>J'essaie d'authentifier un webhook à l'aide d'une clé API (nom secret et valeur secrète).所以我制作了两个文件:</p> <p>webhook.php:</p> <pre class="brush:php;toolbar:false;"><?php include('webhook-api-key.php'); // Récupère le corps de la requête de la requête POST du webhook si ($http_status_code === 200){ $request_body = file_get_contents('php://input'); // Convertit le corps de la requête de JSON en un objet PHP $request_data = json_decode($request_body); // Extraire les propriétés du contact des données de la requête $contact_properties = $request_data->properties; // Extrait la valeur de la propriété email $email = $contact_properties->email->valeur; // Extrait la valeur de la propriété prénom $first_name = $contact_properties->firstname->value; // Extrait la valeur de la propriété du nom de famille $last_name = $contact_properties->lastname->value; // Faire quelque chose avec les données du contact, comme les ajouter à une base de données ou envoyer une notification par e-mail // Par exemple: $contact_data = tableau( 'e-mail' => $e-mail, 'prénom' => $prénom, 'nom' => $nom_de_famille ); // Ajouter les données du contact à une base de données ou envoyer une notification par e-mail, etc. // Envoie une réponse HTTP à HubSpot indiquant que le webhook a été reçu et traité avec succès http_response_code(200); } ?>≪/pré> <p> et webhook-api-key.php:</p> <pre class="brush:php;toolbar:false;"><?php $endpoint_url = 'https:/.../hubspot/webhook.php'; // Configurer le nom secret et la valeur secrète de la clé API $api_key_secret_name = 'mot' ; $api_key_secret_value = 'anther_word'; // Configurer les en-têtes de requête HTTP POST $en-têtes = tableau( 'Type de contenu : application/json', 'Autorisation : Porteur '.$api_key_secret_value ); // Configurer le corps de la requête HTTP POST $corps = tableau( 'api_key' => $api_key_secret_value ); // Envoie la requête HTTP POST à ​​l'URL du point de terminaison du webhook $ch = curl_init($endpoint_url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_POST, vrai); curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($body)); $réponse = curl_exec($ch); // Vérifie les erreurs si(curl_errno($ch)) { $message_erreur = curl_erreur($ch); echo 'Erreur : '.$error_message; } // Récupère le code d'état de la réponse HTTP $http_status_code = curl_getinfo($ch, CURLINFO_HTTP_CODE); // Ferme la requête HTTP POST curl_close($ch); // Gère la réponse du webhook si ($http_status_code === 200) { echo 'Webhook authentifié avec succès.'; } autre { echo 'L'authentification Webhook a échoué avec le code d'état HTTP : ' . $http_statut_code ; } ?>≪/pré> <p>在 Hubspot 配置中,网址为"https:/.../hubspot/webhook.php"。</p> <p>Est-ce que ça va ? Je demande parce que lorsque j'ai essayé de le tester, cela a tué mon serveur et je ne trouve pas d'exemple sur Internet utilisant ce type d'authentification. </p> <p>Merci ! </p>
P粉545910687P粉545910687439 Il y a quelques jours548

répondre à tous(1)je répondrai

  • P粉413307845

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

    C’est donc en fait très simple. Il n'y a aucun exemple sur Internet et la documentation est médiocre, expliquant davantage les signatures Hubspot que les clés API. J'ai enfin compris comment cela fonctionne et voici le code fonctionnel :

    $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
    }

    répondre
    0
  • Annulerrépondre