Zoom APIのWebhook機能を使用しようと思い、endpoint URLを入力したところこんなエラーが出ました。
Event notification endpoint URL - URL validation failed. Try again later
ドキュメントを読むと、CRCという形式を返さないとvalidationが通らないとのこと。
Node.jsのサンプルしかなかったので、PHPで書き直してみました。
challenge-response check (CRC)
まず、Zoomアプリに記載されているSecret Tokenを用意します。
そしてエンドポイントのPHPを書きます。
$body = file_get_contents('php://input');
$bodyJson = json_decode($body, true);
// Secret Token
$consumer_secret = '***';
$hashForVerify = hash_hmac( 'sha256', $bodyJson['payload']['plainToken'], $consumer_secret, false );
// CRCのレスポンス
$response = [
'plainToken' => $bodyJson['payload']['plainToken'],
'encryptedToken' => $hashForVerify,
];
// ステータスコード200をセット
http_response_code ();
echo json_encode( $response );
これで無事validationが通りました。