也许以下步骤将帮助您识别问题:
- 将 console.log(' LOGS ', response) 添加到您的 Lambda 函数。
- 在 Alexa 应用程序中激活技能并登录
- 返回到您的 Lambda 函数并检查LOGS条目的最后日志。
如果您发现调用了 Lambda 函数而不是问题不是来自您的 OAuth 服务器,但您可能需要处理 Lambda 函数中的“AcceptGrant 指令”,因为它在此处提出:https ://developer.amazon.com/ zh-CN/docs/alexa/device-apis/alexa-authorization.html#directives
将您的 Lambda 函数调整为:
exports.handler = function (request, context) {
if (request.directive.header.namespace === 'Alexa.Authorization' && request.directive.header.name === 'AcceptGrant') {
log("DEBUG:", "Authorization request", JSON.stringify(request));
handleAcceptGrant(request, context);
}
function handleAcceptGrant(request, context) {
var response = {
event: {
header: {
"namespace": "Alexa.Authorization",
"name": "AcceptGrant.Response",
"messageId": request.directive.header.messageId,
"payloadVersion": "3"
},
payload: {}
}
};
log("DEBUG", "Alexa.Authorization ", JSON.stringify(response));
context.succeed(response);
}
如果问题出在AcceptGrant上,那么帐户链接现在应该成功了。