我正在尝试在Windows Phone应用中使用Windows Azure移动服务实现身份验证。我已经按照官方教程和身份验证工作正常。问题是,只要应用程序关闭并再次启动,用户就必须输入用户名和密码。由于服务仅使用身份验证令牌,因此登录页面中的“记住我”选项不太可能有效。
Windows Azure的官方文档显示使用Live SDK与Microsoft帐户进行单点登录的可能性。 Live SDK以string
的形式提供身份验证令牌。但是,即使这个令牌在大约24小时内到期。此外,这仅限于Microsoft帐户。
如果我想缓存用户身份并启用自动登录,我有什么可能?我已经阅读了文章here。一旦令牌过期,用户仍需要再次登录。我见过要求用户只登录一次的应用程序!
答案 0 :(得分:2)
如果您使用Live SDK,则用户只需登录一次。您每次都会调用Live SDK,但SDK本身将为您管理缓存令牌,并在需要时向服务器请求(在绝大多数情况下无需用户干预) - 请参阅示例代码下方。
var liveIdClient = new LiveAuthClient(clientId);
var liveLoginResult = await liveIdClient.LoginAsync("wl.basic wl.signin".Split());
if (liveLoginResult.Status == LiveConnectSessionStatus.Connected) {
var token = new JObject();
token.Add("authenticationToken", liveLoginResult.Session.AuthenticationToken);
var user = await MobileService.LoginAsync(MobileServiceAuthenticationProvider.MicrosoftAccount, token);
}
请注意,如果您在模拟器上运行应用程序,则关闭模拟器时可能会丢失登录信息(我以前见过这个)。但是,当在真实设备上运行时,或者如果您长时间打开模拟器时),您只需要登录一次。