【问题标题】: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;
      }
    }
    

    【讨论】:

      最近更新 更多