首页  >  问答  >  正文

Webhooks - 身份验证类型 Api 密钥 - 秘密名称和秘密值 - PHP 中

<p>我正在尝试使用 api 密钥(秘密名称和秘密值)对 webhook 进行身份验证。所以我制作了两个文件:</p> <p>webhook.php:</p>
properties;

        // 提取email属性值
        $email = $contact_properties->email->value;

        // 提取名字属性值
        $first_name = $contact_properties->名字->值;

        // 提取姓氏属性值
        $last_name = $contact_properties->姓氏->值;

        // 对联系人数据执行某些操作,例如将其添加到数据库或发送电子邮件通知
        // 例如:
        $contact_data = 数组(
            '电子邮件' => $电子邮件,
            '名字' => $名字,
            '姓氏' => $姓氏
        );
        // 将联系人数据添加到数据库或发送电子邮件通知等

        // 向 HubSpot 发送 HTTP 响应,表明 Webhook 已成功接收并处理
        http_response_code(200);
}
?></pre>
<p>和 webhook-api-key.php:</p>
; $api_key_secret_value
);

// 将 HTTP POST 请求发送到 webhook 端点 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));
$响应=curl_exec($ch);

// 检查是否有错误
如果(curl_errno($ ch)){
    $error_message=curl_error($ch);
    echo '错误:'.$error_message;
}

// 获取HTTP响应状态码
$http_status_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);

// 关闭HTTP POST请求
卷曲_关闭($ch);

// 处理 webhook 响应
如果($http_status_code === 200){
    echo 'Webhook 已成功验证。';
} 别的 {
    echo 'Webhook 身份验证失败,HTTP 状态代码:' 。 $http_status_code;
}
?></pre>
<p>在 Hubspot 配置中,网址为“https:/.../hubspot/webhook.php”。</p>
<p>这样可以吗?我这么问是因为当我尝试测试它时它杀死了我的服务器,并且我在互联网上找不到使用这种身份验证的示例。</p>
<p>谢谢!</p>
P粉545910687P粉545910687439 天前546

全部回复(1)我来回复

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

    回复
    0
  • 取消回复