Webhooks - 身份验证类型 Api 密钥 - 秘密名称和秘密值 - PHP 中
P粉545910687
2023-08-30 18:46:16
[PHP讨论组]
<p>我正在尝试使用 api 密钥(秘密名称和秘密值)对 webhook 进行身份验证。所以我制作了两个文件:</p>
<p>webhook.php:</p>
<pre class="brush:php;toolbar:false;"><?php
include('webhook-api-key.php');
// Retrieve the request body from the webhook POST request
if ($http_status_code === 200){
$request_body = file_get_contents('php://input');
// Convert the request body from JSON to a PHP object
$request_data = json_decode($request_body);
// Extract the contact properties from the request data
$contact_properties = $request_data->properties;
// Extract the email property value
$email = $contact_properties->email->value;
// Extract the first name property value
$first_name = $contact_properties->firstname->value;
// Extract the last name property value
$last_name = $contact_properties->lastname->value;
// Do something with the contact data, such as adding it to a database or sending an email notification
// For example:
$contact_data = array(
'email' => $email,
'first_name' => $first_name,
'last_name' => $last_name
);
// Add the contact data to a database or send an email notification, etc.
// Send a HTTP response to HubSpot indicating that the webhook was successfully received and processed
http_response_code(200);
}
?></pre>
<p>和 webhook-api-key.php:</p>
<pre class="brush:php;toolbar:false;"><?php
$endpoint_url = 'https:/.../hubspot/webhook.php';
// Set up the API key secret name and secret value
$api_key_secret_name = 'word';
$api_key_secret_value = 'anther_word';
// Set up the HTTP POST request headers
$headers = array(
'Content-Type: application/json',
'Authorization: Bearer '.$api_key_secret_value
);
// Set up the HTTP POST request body
$body = array(
'api_key' => $api_key_secret_value
);
// Send the HTTP POST request to the webhook endpoint 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);
// Check for errors
if(curl_errno($ch)) {
$error_message = curl_error($ch);
echo 'Error: '.$error_message;
}
// Get the HTTP response status code
$http_status_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
// Close the HTTP POST request
curl_close($ch);
// Handle the webhook response
if ($http_status_code === 200) {
echo 'Webhook successfully authenticated.';
} else {
echo 'Webhook authentication failed with HTTP status code: ' . $http_status_code;
}
?></pre>
<p>在 Hubspot 配置中,网址为“https:/.../hubspot/webhook.php”。</p>
<p>这样可以吗?我这么问是因为当我尝试测试它时它杀死了我的服务器,并且我在互联网上找不到使用这种身份验证的示例。</p>
<p>谢谢!</p>
所以其实很简单。互联网上没有示例,文档也很差,它更多地解释了 Hubspot 签名而不是 API 密钥。 我最终明白了它是如何工作的,这是工作代码: