如何解决因 INVALID_REQUEST_EXCEPTION 而失败的 ASK ChangeReport

How to troubleshoot ASK ChangeReport failing with INVALID_REQUEST_EXCEPTION

摘要:我在尝试提交 ChangeReport 事件时收到 INVALID_REQUEST_EXCEPTION 响应。

我正在与邮递员进行故障排除。 发布到:https://api.amazonalexa.com/v3/events 一个header:使用我的令牌授权(如果这是错误的,我得到正确的错误)

我的body:

{
    "event":{
        "header":{
            "messageId":"06a6278a-0c38-47e5-90e9-12eef0205487",
            "namespace":"Alexa",
            "name":"ChangeReport",
            "payloadVersion":"3"
        },
        "endpoint":{
            "scope":{
                "type":"BearerToken",
                "token":"XXX My Token XXX"
            },
            "endpointId":"BedroomLight"
        },
        "payload":{
            "change": {
                "cause" : {
                    "type" : "PHYSICAL_INTERACTION"
                },
                "properties":[
                {
                    "namespace": "Alexa.PowerController",
                    "name": "powerState",
                    "value": "ON",
                    "timeOfSample": "2019-03-09T15:22:48Z",
                    "uncertaintyInMilliseconds": 500
                }]
            }
        }
    }
}

回复:

{
    "header": {
        "namespace": "System",
        "name": "Exception",
        "messageId": "bb7a3bb7-5c2c-4568-8a31-ae24a075f15e"
    },
    "payload": {
        "code": "INVALID_REQUEST_EXCEPTION",
        "description": "The request was malformed."
    }
}

我的输入通过了架构验证。

我已尝试替换已知的无效值,看看是否可以转移错误消息并缩小根本原因范围。

我与 Github 中的其他代码示例进行了比较,没有发现明显的错误。

我不确定如何缩小问题范围。

与我上面的理解相反,我没有使用正确的 BearerToken。我使用的是授权响应中提供的原始 OAuth 代码(我不理解安全交换的 LoginWithAmazon/LWA 部分)。

造成困难的另一个错误是缺少安全错误。当我创建授权 header 时,我省略了类型 (Bearer),而只是在 header 的值区域中包含了我的值,这可能是格式错误的根本原因。