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 --> [設定] --> [Android] --> [アプリケーションのデプロイ間でデータ/キャッシュを保持する] をオンにします。

Visual Studio を使用している場合は、同様の設定が必要です。

于 2013-11-07T17:52:24.540 に答える