【问题标题】:Storing Access Token and Refresh Token on Xamarin在 Xamarin 上存储访问令牌和刷新令牌
【发布时间】:2016-12-23 02:20:33
【问题描述】:
我有一个使用 ASP.Net Identity 的 WebApi 2。我想在 Xamarin 应用程序中使用它,我正在努力寻找这个问题的直接答案:
如何使用 Xamarin 在设备上存储访问令牌和刷新令牌,类似于 ASP.NET 中的 Cookie 或会话状态?
我可以调用来获取这些令牌,但我是 Xamarin 的新手,不知道如何将它们保存在设备上,这样用户就不需要经常登录。
目标设备是 Windows、iOS 和 Android
【问题讨论】:
标签:
asp.net-web-api
xamarin
local-storage
oauth2
【解决方案1】:
XLabs.Platform 具有适用于 iOS/Droid/WP8 的 ISecureStorage 接口和实现,具有本机加密存储。
你也可以看看Akavache SecureBlobCache。
每次访问令牌过期,使用刷新令牌来获得新的访问令牌(也许是新的刷新令牌)然后替换它们......
【解决方案2】:
我们可以使用 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;
}
}