我已按照指南:
Getting Started with Authentication with Mobile Services .NET for Windows Store
只要我不需要对用户进行身份验证,我就可以在本地运行该服务。如果我将服务发布到Azure,我也可以对用户进行身份验证。但我希望能够在本地测试和对用户进行身份验证。怎么办呢?
我正在使用Live ID,并且我在Web.config中设置了正确的ClientID和ClientSecret。当我尝试从客户端调用LoginAsync时,调用失败,请求无法完成。 (不允许的方法)
** 更新2014-03-20 **
根据Carlos和Henrik的评论,我已将本地服务更新为完全,就像我的服务器实例一样。我跟踪了Scot Hanselmans excellent guide,现在我的服务在端口80 和端口443上本地运行,并且具有完全有效的SSL证书。它甚至运行在完全相同的 https://xxxx.azure-mabile.net 主机名上。
通过这些更改,现在在针对本地计算机运行应用程序或针对Azure运行应用程序之间没有任何配置差异。我可以在浏览器中转到 https://xxxx.azure-mabile.net ,重定向到Live登录,登录,然后成功重定向回服务。在浏览器中一切正常。但是仍然在应用程序中无效。
我附加了调试器,将CLR错误设置为"抛出时中断"我设法在服务中捕获异常。这就是我在即时窗口中看到的内容:
Response属性没有帮助。它没有提供有关该问题的任何其他信息。
唯一突出的是该应用正在尝试对 / login / microsoftaccount 执行 POST ,而浏览器通常会执行 GET 在此地址(然后重定向)。
** 更新#2 2014-03-20 **
在关注remote debugging的Henriks指南后,我能够加载符号并获得 tiny 位更多信息:
"远程主机"
强行关闭现有连接错误代码为10054(WSAECONNRESET)由对等方重置连接。
实时身份验证服务器可能会强制终止连接,但仅限于我使用该应用进行身份验证时。同样,浏览器中的身份验证也很好。这与 / login / microsoftaccount 是来自应用程序的POST的事实相结合似乎表明我从LiveClient.LoginAsync返回的身份验证令牌存在问题。我会做更多的挖掘......
答案 0 :(得分:0)
目前,它已设置为在本地运行和从localhost访问服务时不需要身份验证。在这种情况下,允许匿名访问(当然在云中运行时禁用)。
我们没有办法让您在本地进行身份验证,因为重定向URI无法正常工作(他们无法指向localhost,因为Facebook无法解析和#34;本地主机"。)
一个选择是,我们可以在某种程度上模拟本地身份验证,并为您提供令牌,而无需连接各种身份提供程序。我不确定那会是什么样子,但这是我们可以考虑的事情。
的Henrik
答案 1 :(得分:0)
您是否在Live Connect项目中设置了Mobile client app: Yes
?我认为该设置旨在与Live Connect SDK(客户端)流一起使用,而不是基于浏览器(服务器)流。使用.NET后端尚不支持客户端流程。
您还需要确保在客户端上使用LoginAsync(MobileServiceAuthenticationProvider.MicrosoftAccount)
来触发服务器流。