我正在 Live Connect SDK (http://msdn.microsoft.com/en-us/live/default) 之上构建 Metro C# SkyDrive API - 在 Windows 8 中,用户可以选择登录到 Windows 8 机器使用 LOCAL 帐户或 LIVE 帐户。
使用 Live Connect SDK 时,如果我调用
// assume wlscopes is properly set
LiveAuthClient liveAuthClient = new LiveAuthClient();
LiveLoginResult loginResult = await liveAuthClient.LoginAsync(wlscopes);
// do some stuff on skydrive
liveAuthClient.Logout(); // <-- issue only with live account, not local
使用本地帐户时,它会注销我(很棒)
当我在使用 LIVE 帐户时调用相同的代码时,我得到了一个未经处理的异常——我什至无法围绕这个错误添加一个 try {} catch {}。
例外:
Cannot sign out from the application since the user account is connected. (Exception from HRESULT: 0x8086000E)
显然,由于在 Live 帐户下登录的用户无法注销,我的 api 需要检测当前用户是否正在使用 live 帐户,以便我可以防止调用 logout() 方法。
所以....我的问题是,我如何知道用户在 Windows 8 中登录的帐户类型?