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;
}
}