我正在研究支持帐户链接的 Alexa 技能,并在 IIS 的 Microsoft Azure AppService 网站中托管使用 ASP.NET Core 与 ASP.NET Core Identity 链接帐户的基础结构。
我已经实现了通过 Microsoft.AspNetCore.Authentication.*
NuGet 包使用 Amazon、Facebook、GitHub、Google、Microsoft 和 Twitter 登录的功能。这些对于在网络浏览器中进行标准登录以及通过浏览器手动测试帐户链接过程都非常有效。
但是,当使用 iOS Alexa 应用程序时,只有 Amazon 和 Facebook 可以工作。谷歌不工作,因为不允许从嵌入式应用程序使用它(我收到一个谷歌 403 页面告诉我这一点),但对于其他三个,我不知道发生了什么事情会停止工作。在 iOS Safari 中一切正常,因此对于 iPhone 或 iPad 来说似乎没有什么全局性的,我已经测试过它可以正常工作。
提交登录表单后,GitHub、Microsoft 和 Twitter 似乎都挂起。
我使用 CSP,因此我认为 form-action
列表可能不正确(例如,有时 Amazon 重定向到 na.account.amazon.com
这导致它起初失败,因为我认为只会使用 account.amazon.com
),但是当更新 CSP 列表以暂时允许任何排除 CSP 时,问题仍然存在。另外,我将 report-uri.io
与 CSP 结合使用,没有收到任何错误。
我通过 Fiddler 作为代理运行我的 iPhone 和 iPad,发现嵌入页面正确地将 HTTP POST 提交到我的网站,该网站在所有 6 种情况下都以正确的 HTTP 302 响应进行响应。对于 Amazon 和 Facebook,遵循 302 并且事情按预期进行。对于存在问题的其余三个,Alexa 应用程序的请求似乎已结束。
嵌入式浏览器似乎完全忽略了 HTTP 302,使用户在尝试登录时陷入困境。
我还尝试了 Android Alexa 应用程序,它表现出不同的行为:
- Amazon - 重定向加载 Chrome,破坏应用内流程;
- Facebook - 运行正常;
- GitHub - 重定向加载 Chrome,打破应用内流程;
- Google - 运行正常;
- Microsoft - 重定向加载 Chrome,中断应用内流程;
- Twitter - 重定向加载 Chrome,中断应用内流程。
唯一的共同点是 Facebook 和谷歌都支持这两个应用程序(尽管谷歌不允许在 iOS 上使用它)。
我可能做了什么/错过了什么可能导致 Alexa 应用程序无法正确遵循这些重定向?什么会导致 iOS 应用程序不遵循重定向?什么会导致 Android 应用在 Chrome 而不是应用内浏览器中打开重定向?
最佳答案
事实证明,Alexa 应用似乎(看似随机)决定在帐户链接过程中是否遵循重定向 URL。
如果您在开发人员门户的技能配置中的可选授权 URL 列表中列出帐户链接期间可能使用的主机,事情将按预期进行。
在亚马逊开发者论坛上找到这条评论后确定:https://forums.developer.amazon.com/answers/27564/view.html
关于android - Alexa App 不遵循 ASP.NET Core Identity 发出的 302 重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42880489/