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