Node.js alexa请求令牌未被传递
我真的很震惊,Alexa官方文档中有一些东西,但它在代码中不起作用。我只是尝试创建一个Node.js alexa请求令牌未被传递,node.js,alexa,alexa-skills-kit,Node.js,Alexa,Alexa Skills Kit,我真的很震惊,Alexa官方文档中有一些东西,但它在代码中不起作用。我只是尝试创建一个列表api,并执行以下操作: 具体来说,本节将讨论ListManagementServices,以使用Alexa列表的CRUD 如果单击我提供的第二个链接,您将清楚地看到它们的状态是:可以从此.event.context.System.user.permissions.approvementToken的请求中检索令牌 好的,很好,转到我的代码,插入this.event.context.System.user.p
列表api,并执行以下操作:
具体来说,本节将讨论ListManagementServices
,以使用Alexa列表的CRUD
如果单击我提供的第二个链接,您将清楚地看到它们的状态是:可以从此.event.context.System.user.permissions.approvementToken的请求中检索令牌
好的,很好,转到我的代码,插入this.event.context.System.user.permissions.approventToken
,结果在cloudwatch中得到一个错误,说无法获取未定义的
的ApproventToken。对此我完全目瞪口呆,我记录了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"
}
}
如您所见,用户
对象中显然没有权限
对象,其他任何地方也没有令牌
。我唯一看到的是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);
});
转到应用程序,未列出任何列表。我想它失败了?我没有办法知道,因为两个控制台日志都没有被命中,告诉我它是成功的还是错误的(假设有错误)
有人能给我解释一下如何得到这个需要的代币吗?这些列表是否会自动显示在配套应用程序中?我确实在某个地方读到他们应该这样做,但同样,文档显然不是最新的,我只是想知道应该期待什么,以及如何看到这是否有效 这里的问题是您没有读取列表的权限。因此,user.permissions.approvementToken未定义
尝试下载Alexa应用程序,使用我的亚马逊用户登录
在调用api之前,我请求权限(在本例中,卡片请求用户电子邮件的权限许可)
应用程序的主页应显示一张卡,以便访问。因此,您可以获得具有正确权限的apiAccessToken和user.permissions.approvementToken。无法立即发现任何错误,但您是否确保在配置技能时请求列表权限?查看alexa的文档,了解有关列表权限的更多信息
{"type": "AskForPermissionsConsent",
"permissions": [
"alexa::profile:email:read" //replace with the permissions that you need
])}