我正在为我的Win8 / WP8应用程序进行数据同步 - 用 XAML / C#编写。定期/或在应用启动/暂停时,我想与用户的OneDrive同步数据文件。为此,我需要让他们登录到他们的Microsoft Live帐户。我希望使用Live SDK(v5.6)来做到这一点。
问题:
对于拥有本地Windows 8帐户的用户,Live SDK允许我使用内置凭据提示进行签名。这很有效。
对于将其Microsoft帐户与其Windows 8帐户相关联(并使用其Microsoft帐户登录到Windows)的用户,Live SDK允许我使用单点登录 - 而且我有此工作。
但我无法呼叫退出,以便使用其他Microsoft帐户登录。
1b 是我的问题。内置的Windows应用商店应用程序允许用户使用可以使用链接到其Windows帐户的MS帐户的用户体验 - 或者 - 选择使用其他MS帐户。实际上:“以不同用户身份登录”选项。 (见附件)。在内置的Windows商店应用程序中,它看起来并不像技术上单点登录,但这是我想要的用户体验 - 我不太关心单点登录,它很不错,但是以其他用户身份登录是一项非常重要的要求。
我尝试了什么:
大量搜索。在网上发现了一群人要求同样的事情。有一些尚未得到解答的问题,甚至一些“已接受”的答案在SO上并没有真正起作用:
我已经在Github上分发了LiveSDK(https://github.com/krishna-nadiminti/LiveSDK-for-Windows/commit/2cdb5408c0d8482c026cd96da6b99e4633677081)并测试了它 - 无论是否请求'wl.signin'范围 - 都没有好处。它没有更改用户的选项。
查看WinRT - OnlineIdAuthenticator类的文档,可以选择在登录用户时始终显示CredentialPrompt - 但如果通过链接帐户登录,则不允许用户更改用户名。
我查看了内置的WinStore应用程序的js代码,它使用了一些内部(本机?)调用'OMStub' - 它具有授权用户的方法。这似乎不是公共JavaScript Live SDK
问题(S):
WinStore应用程序是如何做到的?
变通办法/商店认证
现在,我有点担心我只有最后一个选项:通过Live connect REST API滚动我自己的.NET客户端,并为凭证提示添加我自己的UI,以及一个看起来完全正确的用户同意对话框就像Windows运行时提供的那些。在这种情况下,存储认证会发生什么?我可以先通过WACK运行它 - 但商店应用程序证书指南没有谈到这个:所以不确定它是否会通过认证。
我在应用认证指南中找不到Microsoft帐户。
MSDN上Live SDK的文档明确提到我们并不打算创建自己的登录UI:http://msdn.microsoft.com/en-us/library/windows/apps/xaml/hh968445.aspx
然而,商店应用似乎违反了这一点 - 可能是因为它根本不使用Live SDK。
还有一篇MSDN文章说,当用户使用Microsoft帐户登录Windows时,只能在应用内部注销: http://msdn.microsoft.com/en-us/library/windows/apps/jj193591.aspx#adding_user-authentication_functionality_to_your_windows_store_apps并且唯一的方法是让用户分离Windows / Microsoft帐户或切换到其他用户帐户。
再次 - 显然事实并非如此。商店应用为用户提供了使用其他帐户的方式。
请帮忙吗?
答案 0 :(得分:0)
您可能需要查看Web身份验证代理:http://msdn.microsoft.com/en-us/library/windows/apps/xaml/dn448945.aspx
它将调用实际的Microsoft帐户登录流程,但仍然可以让您灵活地注销并以其他用户身份重新登录。