craigh / alexa-request-validator
验证来自亚马逊Alexa的请求
1.0.4
2019-08-05 16:02 UTC
Requires
- glenscott/url-normalizer: ^1.4
Requires (Dev)
- phpunit/phpunit: ^5.7
This package is auto-updated.
Last update: 2024-09-12 02:12:41 UTC
README
这是PHP实现的Alexa请求验证,用于使用Alexa技能的Web服务时,如Alexa文档所述
安装
通过Composer安装,执行以下命令:
composer require craigh/alexa-request-validator
如何使用
安装完成后,您可以在类中实例化AlexaRequestValidator,如下所示:
$validator = new \Humps\AlexaRequest\AlexaRequestValidator('YOUR_ALEXA_SKILL_ID', file_get_contents('php://input'), $_SERVER['HTTP_SIGNATURECERTCHAINURL'], $_SERVER['HTTP_SIGNATURE']);
然后简单地这样做(理想情况下,您可以在中间件中添加此操作)
try { if($validator->validateRequest()){ // Accept request to your service } // Reject request with a 500 error, hopefully this shouldn't happen! }catch(\Humps\AlexaRequest\Exceptions\AlexaValidationException $e) { // Reject the request with a 400 error or the given error code (via $e->getCode()) with the returned message ($e->getMessage()) }
超时容忍度
默认的超时容忍度为120秒(在亚马逊要求的150秒内)。如果您想调整这个值,可以在构造函数中传递第五个参数
$validator = new AlexaRequestValidator('YOUR_ALEXA_SKILL_ID', file_get_contents('php://input'), $_SERVER['HTTP_SIGNATURECERTCHAINURL'], $_SERVER['HTTP_SIGNATURE'], 150);
提示:如果您正在通过亚马逊Alexa技能的“测试”部分进行测试,您可能想在开发期间增加这个容忍度,以便您可以在服务器上重新播放请求。只是别忘了在认证前将其重置!