Alexa SMAPI-导出技能包-405方法不允许

时间:2019-05-08 13:02:22

标签: php amazon-web-services alexa

根据以下文档: Create an export request for an existing skill

  

POST / v1 / skills / {skillId} / stages / {stage} / exports

但是文档没有说明POST请求body应该是什么,因此我尝试不发送正文,并尝试发送空的JSON对象。结果相同。

我正在将cURL与PHP结合使用,以将POST请求发送到完整网址:

$url = "https://api.amazonalexa.com/v1/skills/$skillId/stages/$stage/exports";

$ch = curl_init($url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Authorization: '.$access_token));
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_HTTP_VERSION, 'CURLOPT_HTTP_VERSION_NONE');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POSTFIELDS,json_encode(array()));

//enable and get headers, this API response has no body, only headers
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_NOBODY, 1);
$result = curl_exec($ch);
curl_close($ch);

但是我收到此错误响应状态:

  

不允许使用HTTP / 1.1 405方法


我知道skillIdstage变量是正确的,因为我能够以类似的方式将POST请求发送到其他API方法,而不会出错。 (ei。Update Skill Manifest

我尝试仔细检查通过Amazon Login设置的所有权限,并且正在使用文档中显示的所有权限:

alexa::ask:skills:read alexa::ask:skills:readwrite alexa::ask:models:read alexa::ask:models:readwrite alexa::ask:skills:test

为什么它仍然返回405错误?

1 个答案:

答案 0 :(得分:1)

使用CURLOPT_NOBODY将请求方法更改为HEAD而不是POST,因此请尝试删除该行。