У меня есть следующий простой. NET сценарий:
static void Main(string[] args)
{
var result1 = Login().Result;
var result2 = Login().Result;
}
public static async Task<AuthenticationResult> Login()
{
var options = new PublicClientApplicationOptions();
options.TenantId = "...";
options.ClientId = "...";
var app = PublicClientApplicationBuilder.CreateWithApplicationOptions(options)
.WithDefaultRedirectUri()
.Build();
AuthenticationResult result;
var accounts = await app.GetAccountsAsync();
IAccount account = accounts.FirstOrDefault();
var scopes = new string[] { "..." };
try
{
result = await app.AcquireTokenSilent(scopes, account).ExecuteAsync();
}
catch (MsalUiRequiredException)
{
result = await app.AcquireTokenInteractive(scopes).ExecuteAsync();
}
return result;
}
Я ожидал, что первый вызов Login (...) выполнит интерактивную аутентификацию, а затем второй вызов var accounts = await app.GetAccountsAsyn c () возвращает ранее зарегистрированную учетную запись. Однако на счетах нет ни одной позиции. Итак, похоже, что кеш токенов не является частью этих вызовов.
Есть ли способ сохранить зарегистрированную учетную запись при первом вызове? Не должно быть автомата c?