alexa请求令牌未被传递

问题描述 投票:0回答:1

真的只是惊讶于官方Alexa文档中的某些内容,并且它在代码中不起作用。我只是想创建一个list api,并遵循:Alexa NodeJS

具体来说,this部分谈论ListManagementServices到CRUD与Alexa列表。

如果你点击我提供的第二个链接,你会清楚地看到他们陈述token can be retrieved from the request at this.event.context.System.user.permissions.consentToken

好的,转到我的代码,插入this.event.context.System.user.permissions.consentToken只是为了在cloudwatch中说can't get consentToken of undefined时出错。完全被这个目瞪口呆,我记录了this.event.context,看看我正在使用什么样的物体。这是对象:

{
    "AudioPlayer": {
        "playerActivity": "IDLE"
    },
    "Display": {
        "token": ""
    },
    "System": {
        "application": {
            "applicationId": "amzn1.ask.skill.0beed0e6-51a1-4c6d-ac33-ffc5917865b7"
        },
        "user": {
            "userId": "amzn1.ask.account.AGCMLFZZENPXOPVJNBZYE3MEATUMFIDBZSABYFXORTYX2NH5DYTKR2YGRNEHSKDCQCWA3Q33GIHZIKVI47GON36TEE3XSNXASFYYNS46OXAEAHC3M3QMOFEGH26CCO7VDTEEW5WJW4VIJVYC2XUPHTI73N7ZI5IKH66MOMX5XQTHKUVRLPOAK4ZPJALLZWFJOT4PDQXZP3MVBFA"
        },
        "device": {
            "deviceId": "amzn1.ask.device.AG2Q3NSHYI3KAHOESWBELUSD7GBARMROPJI6NWNWMBHTNGMK3TCKP5PNDAS2AN34JWCCIKURX24EMFCTRMJZGIXSA2YBCSDOOOFQ52PGCZGFDK3RIUE6OK2Z5H7YIYBNBDU7UN5UL2PMXAUEK2IWHILS7SFQ",
            "supportedInterfaces": {
                "AudioPlayer": {},
                "Display": {
                    "templateVersion": "1.0",
                    "markupVersion": "1.0"
                }
            }
        },
        "apiEndpoint": "https://api.amazonalexa.com",
        "apiAccessToken": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6IjEifQ.eyJhdWQiOiJodHRwczovL2FwaS5hbWF6b25hbGV4YS5jb20iLCJpc3MiOiJBbGV4YVNraWxsS2l0Iiwic3ViIjoiYW16bjEuYXNrLnNraWxsLjBiZWVkMGU2LTUxYTEtNGM2ZC1hYzMzLWZmYzU5MTc4NjViNyIsImV4cCI6MTUxOTc3MDI0OSwiaWF0IjoxNTE5NzY2NjQ5LCJuYmYiOjE1MTk3NjY2NDksInByaXZhdGVDbGFpbXMiOnsiY29uc2VudFRva2VuIjpudWxsLCJkZXZpY2VJZCI6ImFtem4xLmFzay5kZXZpY2UuQUcyUTNOU0hZSTNLQUhPRVNXQkVMVVNEN0dCQVJNUk9QSkk2TldOV01CSFROR01LM1RDS1A1UE5EQVMyQU4zNEpXQ0NJS1VSWDI0RU1GQ1RSTUpaR0lYU0EyWUJDU0RPT09GUTUyUEdDWkdGREszUklVRTZPSzJaNUg3WUlZQk5CRFU3VU41VUwyUE1YQVVFSzJJV0hJTFM3U0ZRIiwidXNlcklkIjoiYW16bjEuYXNrLmFjY291bnQuQUdDTUxGWlpFTlBYT1BWSk5CWllFM01FQVRVTUZJREJaU0FCWUZYT1JUWVgyTkg1RFlUS1IyWUdSTkVIU0tEQ1FDV0EzUTMzR0lIWklLVkk0N0dPTjM2VEVFM1hTTlhBU0ZZWU5TNDZPWEFFQUhDM00zUU1PRkVHSDI2Q0NPN1ZEVEVFVzVXSlc0VklKVllDMlhVUEhUSTczTjdaSTVJS0g2Nk1PTVg1WFFUSEtVVlJMUE9BSzRaUEpBTExaV0ZKT1Q0UERRWFpQM01WQkZBIn19.aKkY8UG0vSs-uP5IoOk-3_MflWI-d9KpIcWSba8YZSEGulOUeyJjHx9qfouOBO3o8WjqeMdLiE1agu6GohXaGeV4jFty9wpg2_Cp_RIAqSpPm-THDt48yRK_6O7PXZjVzgtUUrg81Gi8uceDy7bY42bP7_if5JDpTFLfRxuo7Cj5PmjhqA9aKpdV0PTUWCo6BFrOC9EoNZqjxt-MZrHyR0UQDIO4Ly-y-WfVIf4wqD_VR7YL3f9MW81UcH0XGA6G9_xwvKBsA-VlkideSqudnynM1fUb68HY42qzRn7AzlUPvTcu7ZUuJudc_hTyHDXmcB8J2XBkMWsZJLJCR8NlMA"
    }
}

正如你所看到的,显然在permissions对象中没有users对象,并且在其他任何地方都没有token。我唯一看到的是apiAccessToken,当我尝试使用它时,根本没有发生任何事情。什么都没有,我的意思是,我的以下控制台日志都没有被击中:

const lms = new Alexa.services.ListManagementService();

  lms.createList(listObj, token)
     .then((data) => {
       console.log(`list retrieved: ${JSON.stringify(data)}`);
       this.context.succeed();
     })
     .catch((err) => {
       console.log(err.message);
     });

去了应用程序,没有列表。我假设它失败了?我无法知道,因为没有控制台日志被告知我是否成功或错误(假设错误)。

有人可以向我解释如何获得所需的令牌吗?这些列表会自动显示在配套应用中吗?我确实读过他们应该阅读的地方,但同样,文档显然不是最新的,我只是想知道会发生什么以及如何查看这是否有效。

node.js alexa alexa-skills-kit
1个回答
1
投票

这里的问题是你没有阅读list的权限。因此,user.permissions.consentToken未定义尝试下载Alexa应用程序,使用我的Amazon用户登录。

在调用api之前,我请求权限(在此示例中,卡要求用户电子邮件的权限许可)

 {"type": "AskForPermissionsConsent",

           "permissions": [

              "alexa::profile:email:read" //replace with the permissions that you need

          ])}

应用程序的主页应显示一张卡片以供访问。因此,您可以使用正确的权限获取api访问令牌和user.permissions.consent令牌。

© www.soinside.com 2019 - 2024. All rights reserved.