ウェブ上の多くの投稿を読んだ後に紛失してしまい、助言が必要です。 Xamarin.FormsプロジェクトでADAL 3.17.1を使用しています。 ADAL3では、リフレッシュトークンとAcquireTokenByRefreshTokenAsyncは使用できなくなり、内部的に処理されます。しかし、メモリに保存されているこのRefreshトークンは、IOSアプリケーションがバックグラウンドで実行されたとき、またはアプリケーションが閉じられていて再オープンされたときに、ユーザは再びログを記録する必要があります。ADAL 3トークンの永続性
午前中にユーザーログを記録し、トークンを8-10時間有効にすることはできますか。アプリが起動したり、次の8-10時間以内に再開したときにログインするように求めていないのですか?私はそれについてのポストを見つけることができません。すべての記事は、リフレッシュトークンを使用している...ここで
はIOSで実行され、私の認証クラスのコードです:あなたは新しいキャッシュを初期化しているよう
public class Authenticator_iOS : IAuthenticator
{
public async Task<MultipleAuthResult> Authenticate(string authority, string resource, string resource2, string clientId, string returnUri)
{
MultipleAuthResult multipleAuth = new MultipleAuthResult();
var authContext = new AuthenticationContext(authority, new CustomTokenCache());
if (authContext.TokenCache.ReadItems().Any())
authContext = new AuthenticationContext(authContext.TokenCache.ReadItems().First().Authority);
var controller = UIApplication.SharedApplication.KeyWindow.RootViewController;
var uri = new Uri(returnUri);
var platformParams = new PlatformParameters(controller);
platformParams.PromptBehavior = PromptBehavior.Auto;
try
{
multipleAuth.ResultBackEnd = await authContext.AcquireTokenAsync(resource, clientId, uri, platformParams); // Token for backend
multipleAuth.ResultGraph = await authContext.AcquireTokenAsync(resource2, clientId, uri, platformParams); // Token for Graph query
}
catch (Exception e)
{
return null;
}
return multipleAuth;
}
public void SingOut(string authority)
{
//Token
var authContext = new AuthenticationContext(authority);
if (authContext.TokenCache.ReadItems().Any())
{
authContext.TokenCache.Clear();
}
//Webview cookie
NSHttpCookieStorage CookieStorage = NSHttpCookieStorage.SharedStorage;
foreach (var cookie in CookieStorage.Cookies)
{
CookieStorage.DeleteCookie(cookie);
}
}
}
、それはXamarinクラスで利用可能である必要がありますので。トークンを取得するメソッドにはオーバーロードがあり、トークンキャッシュオブジェクト(最初に作成して独立した記憶域に保持する)に渡すことができます。トークンは1時間有効です。次に、 '.AcquireTokenAsync()'を呼び出すとキャッシュからのリフレッシュトークンを使用して新しいトークンを取得し、UIプロンプトなしでトークンを更新します。 – evilSnobu
返信いただきありがとうございます。私はADAL3のようなAuthenticatorクラスを使用します。 UWPとAndroidでは "キャッシュ"機能がうまく機能しますが、IOSはログインを要求し続けます。 私が使用しているコードで投稿を更新します –