我尝试将 Alexa AWS Lambda 函数 (node.js 6.10) 与 Azure Active Directory 连接到我的 Azure-Cloud-API。读完后文档 https://developer.amazon.com/docs/custom-skills/link-an-alexa-user-with-a-user-in-your-system.html来自亚马逊和许多教程,我现在有了一个有效的帐户链接。这意味着,我可以在智能手机上的 Alexa 应用程序内链接技能帐户。
我的自定义技能的帐户链接:
{来自我的天蓝色门户的数据}
- 授权类型:授权码授权
- 授权 URI:{OAUTH 2.0 授权端点}
- 访问令牌 URI:{OAUTH 2.0 令牌端点}
- 客户端 ID:b9c6[...]bc60 {应用程序 ID}
- 客户端秘密:{客户端秘密}
- 客户端身份验证方案:请求正文中的凭据
- 范围:openid
- 域:空
- 重定向 url:--> 在 Azure 门户中定义为允许的令牌受众和回复 URL
在我的 aws lambda 函数中,我从 Alexa 获取事件请求,如文档所述,其中包含版本、会话、上下文、请求的属性...
我对文档的理解是,Azure-Cloud-API-Request 所需的令牌应该位于此处:session.user.accessToken
但这个令牌看起来不像我需要的,并且在测试运行后我总是得到“未经授权”。
令牌看起来像这样,长度为 1252 个字符:
AQABAAAAAADX8GCi6Js6SK82TsD2Pb7rqGN56iHT_YSxlSr1RAdXucGs0S3ykOaw0XZ1WnjJotqZAn9BH7agRbP0VQv2rnJuRw_aJil7 [...] JIEO2Ap4wuG-tTwiSmZBfbLhyYtwQmxLAkqiLApqF mBYcyu-dnzlVV4liDGyTQ7gAXufd3zt7QGmi3UfP1aL9f5NBeXbmxnU6FHRzF10QZa19pTQgNTtIK8oIAA
如果我配置邮递员并向 azure activ 目录发送请求,我会得到如下所示的 accessToken(长 1168 个字符):
eyJ0eXAiOiJKV1QiLCJhbGc [...] Ezbk5aY2VEYyJ9.eyJhdWQiOiJodHRwczovL21ldGVvcmEtYXBwLmF [...] kY5MWVUUXdBQSIsInZlciI6IjEuMCJ9.KJco47-FdJ_eeqv38LL [...] YK_ 4JqCRDw
这个看起来像一个 jwt-token,如果我直接在 aws lambda 函数中复制这个令牌并将其用于 Azure-Cloud-API-Request,它就可以工作(直到令牌过期)。
现在不知道是不是我的账号绑定配置有问题?或者我是否必须使用 Alexa 的令牌做一些事情才能获得真正的令牌?或者真正的令牌在其他地方而我必须在那里获取它?
非常感谢你的帮助!
亚马逊文档“Alexa 技能套件”:
https://developer.amazon.com/docs/custom-skills/link-an-alexa-user-with-a-user-in-your-system.html https://developer.amazon.com/docs/custom-skills/link-an-alexa-user-with-a-user-in-your-system.html
编辑(解决方案)2018年6月11日
- 授权类型:授权码授权
- 授权 URI:{OAUTH 2.0 授权端点} + ?resource= + {应用程序 ID}
- 访问令牌 URI:{OAUTH 2.0 令牌端点}
- 客户端 ID:b9c6[...]bc60 {应用程序 ID}
- 客户端密钥:{客户端密钥} 应用程序 > 设置 > 密钥 新密钥,过期日期 = 2 年
- 客户端身份验证方案:请求正文中的凭据
- 范围:空
- 域:空
- 重定向 url:--> 在 Azure 门户中定义为允许的令牌受众和回复 URL