0

是否有一种可接受的方式来判断用户是否使用Microsoft帐户而不是本地帐户登录到Windows通用应用程序?Windows Universal - 如何检查用户是否登录到Microsoft帐户?

我试图实施应用内购买,如果CurrentApp :: GetUnfulfilledConsumables()是从本地帐户中调用的,我已经遇到了麻烦。引发异常“特定帐户不存在”。

网络上的一些人正在使用Live SDK来尝试初始化用户的凭据,这对非Microsoft帐户将失败。通过这种方式,他们有一个迂回的方式来计算出用户是否已登录。(https://social.msdn.microsoft.com/Forums/en-US/f6946851-b495-45f6-95a4-eb3c2a004c0e/live-sdk-v53-how-to-tell-the-difference-between-a-user-logged-in-with-a-microsoft-account-and?forum=messengerconnect

但我想知道是否有更好,更干净的方式来检测用户是否登录到Microsoft帐户或一个本地帐户,而不必为了一个函数调用而集成整个SDK。

感谢您的帮助。

回答

1

不幸的是,答案是您需要将呼叫放入try ... catch以捕获异常,然后查看exception->HResult以确认它是“特定帐户不存在”异常。 (并重新抛出其他任何东西。)

+0

我希望能够在打电话购买API之前进行安全检查。如果我发现更接近我所寻找的东西,我一定会回来。 谢谢你的建议。 – Kylaaa

+0

如何对'try..catch'内的'CurrentApp :: GetUnfulfilledConsumables()'进行静默调用,看它是否引发异常。如果没有,那么你很好地启用你的应用程序内购买用户界面。如果它引发异常,则应用内购买无效,您可以禁用UI。 –

+0

最终,我的应用程序的购买流程只有两个入口点:CurrentApp :: PurchaseProduct()和CurrentApp :: GetUnfulfilledConsumables()。 Microsoft处理用户未登录到PurchaseProduct()的帐户的情况。所以最终,你的解决方案解决了我的问题,即使不是我希望的方式。 如果调用抛出一个字符串值等于“-2147023579”的HResult异常,我们知道这是因为“该特定帐户不存在”。 谢谢雷蒙德。 – Kylaaa