在Xamarin上存储访问令牌和刷新令牌

时间:2016-12-23 02:20:33

标签: asp.net-web-api xamarin local-storage oauth2

我有一个使用ASP.Net Identity的WebApi 2。我想在Xamarin应用程序中使用它,我很难找到这个问题的直接答案:

如何使用Xamarin在设备上存储访问令牌和刷新令牌,类似于ASP.NET中的Cookie或会话状态?

我可以拨打电话获取这些令牌,但我是Xamarin的新手,无法解决如何将它们保存在设备上,因此用户无需经常登录。

目标设备是Windows,iOS和Android

2 个答案:

答案 0 :(得分:1)

XLabs。平台具有ISecureStorage接口和iOS / Droid / WP8实现,带有本机加密存储。
您还可以查看Akavache SecureBlobCache 每次访问令牌过期时,使用刷新令牌获取新的访问权限(也许是新刷新TOKE)然后替换它们......

答案 1 :(得分:0)

我们可以使用 Xamarin.Auth 将数据存储在帐户商店中,如下所示。

存储帐户信息

public void SaveCredentials (string userName, string password)
{
  if (!string.IsNullOrWhiteSpace (userName) && !string.IsNullOrWhiteSpace (password)) {
    Account account = new Account {
      Username = userName
    };
    account.Properties.Add ("Password", password);
    AccountStore.Create ().Save (account, App.AppName);
  }
}

检索帐户信息

public string UserName {
  get {
    var account = AccountStore.Create ().FindAccountsForService (App.AppName).FirstOrDefault ();
    return (account != null) ? account.Username : null;
  }
}

public string Password {
  get {
    var account = AccountStore.Create ().FindAccountsForService (App.AppName).FirstOrDefault ();
    return (account != null) ? account.Properties ["Password"] : null;
  }
}