3

我正在使用 Xamarin.Auth 对foursquare 等服务进行身份验证。我的身份验证代码运行良好,问题是当我部署新版本的应用程序时帐户数据没有保留 - 每次我在手机上部署测试版本时,我都必须重新进行身份验证。

这是我存储帐户的方式;

  /// <summary>
/// Stores the account.
/// </summary>
private void StoreAccount(AuthenticatorCompletedEventArgs eventArgs)
{
    if (!eventArgs.IsAuthenticated) // make sure we are authenticated.
    {
        Log.Debug(Logging.AppTag, "FourSquareClient can't store account as auth. is cancelled. ");
        return;
    }

    this.IsAuthenticated = true;
    this.Account = eventArgs.Account;

    AccountStore.Create(this.OwnerContext).Save(eventArgs.Account, "Foursquare");
}

这是我检查我们是否有存储帐户的方法;

 /// <summary>
/// Retrieves stored account.
/// </summary>
private void RetrieveAccount()
{
    if (this.IsAuthenticated)
    {
        Log.Debug(Logging.AppTag, "FourSquareClient is already authenticated! ");
        return;
    }


    var accounts = AccountStore.Create(this.OwnerContext).FindAccountsForService("Foursquare");
    var enumerable = accounts as IList<Account> ?? accounts.ToList();

    if (enumerable.Any())
    {
        Log.Info(Logging.AppTag, "Foursquareclient found account data.");
        this.IsAuthenticated = true;
        this.Account = enumerable.First();
    }
    else
    {
        Log.Info(Logging.AppTag, "Foursquareclient no account data found!");
        this.IsAuthenticated = false;
        this.Account = null;
    }
}
4

1 回答 1

4

默认行为是在每次部署应用程序时重置您的 Android 设置。为了防止这种情况,在 Xamarin Studio --> Preferences --> Android --> 检查“Preserve data/cache between application deploys”

如果您使用的是 Visual Studio,则应该有类似的设置。

于 2013-11-07T17:52:24.540 回答