AADB2C900080: Срок действия предоставленного гранта истек. Пожалуйста, повторите аутентификацию и повторите попытку на i ⇐ IOS
AADB2C900080: Срок действия предоставленного гранта истек. Пожалуйста, повторите аутентификацию и повторите попытку на i
Я получаю сообщение об ошибке только для одного развертывания iOS: AADB2C90080: срок действия предоставленного гранта истек. Повторите аутентификацию и повторите попытку. при следующем вызове MSAL await ClientApplication.AcquireTokenSilent:
public async Task ProcessImage(byte[] imageBytes, токен CancellationToken = по умолчанию) { пытаться { РуныПостответ? ответ = ноль; учетные записи var = (ожидают ClientApplication.GetAccountsAsync(SignInSignOutPolicy)).ToList(); var result = await ClientApplication.AcquireTokenSilent (новая строка [] { ApiScope }, account.First()).WithForceRefresh(true).ExecuteAsync(токен); //исключение в этой строке используя (var client = Create()) { client.DefaultRequestHeaders.Authorization = новый AuthenticationHeaderValue("Носитель", result.AccessToken); используя (var content = новый ByteArrayContent(imageBytes)) { content.Headers.ContentType = новый MediaTypeHeaderValue("application/octet-stream"); var ответ = ждут client.PostAsync("process_image/", контент, токен); если (ответ.IsSuccessStatusCode) { var raw = ожидайте ответа.Content.ReadFromJsonAsync(cancellationToken: токен); если (необработанное! = ноль) { resp = новый RunesPostResponse(); соотв.Аннотации = raw.annotations; соотв.Успех = сырой.успех; соотв.AnnotatedImage = Convert.FromBase64String(raw.annotatedImage); } } } } возврат соответственно; } поймать (исключение ex) { бросать; } } Перед вызовом этого кода успешно выполняется следующий код (в интерактивном режиме):
public async Task DoLogin (boolforceInteractive = false, токен CancellationToken = по умолчанию) { bool tryInteractive = ложь; если (!forceInteractive) { пытаться { учетные записи var = (ожидают ClientApplication.GetAccountsAsync(SignInSignOutPolicy)).ToList(); если (accounts.Any()) { результат вар = ждут ClientApplication.AcquireTokenSilent (новая строка [] {ApiScope}, account.First()).ExecuteAsync(); IsLoggedIn = !string.IsNullOrEmpty(result.AccessToken); tryInteractive = !IsLoggedIn; } еще попробоватьИнтерактив = правда; } улов (MsalUiRequiredException) { попробоватьИнтерактив = правда; } поймать (Исключение ex) { ждут Alert.Handle(ex.Message).GetAwaiter(); } } еще попробоватьИнтерактив = правда; если (попробуйтеИнтерактивно) { пытаться { var result = await ClientApplication.AcquireTokenInteractive (новая строка [] {ApiScope}) .WithPrompt(Prompt.SelectAccount).ExecuteAsync(токен); IsLoggedIn = !string.IsNullOrEmpty(result.AccessToken); } поймать (Исключение ex) { ждут Alert.Handle(ex.Message).GetAwaiter(); } } } } Я попробовал запустить следующий код, думая, что это проблема с кэшированием связки ключей iOS, но это не решило проблему:
частный async void ReactiveContentPage_Loaded (отправитель объекта, EventArgs e) { #если IOS SecureStorage.Default.RemoveAll(); #endif }
Я получаю сообщение об ошибке только для одного развертывания iOS: AADB2C90080: срок действия предоставленного гранта истек. Повторите аутентификацию и повторите попытку. при следующем вызове MSAL await ClientApplication.AcquireTokenSilent:
public async Task ProcessImage(byte[] imageBytes, токен CancellationToken = по умолчанию) { пытаться { РуныПостответ? ответ = ноль; учетные записи var = (ожидают ClientApplication.GetAccountsAsync(SignInSignOutPolicy)).ToList(); var result = await ClientApplication.AcquireTokenSilent (новая строка [] { ApiScope }, account.First()).WithForceRefresh(true).ExecuteAsync(токен); //исключение в этой строке используя (var client = Create()) { client.DefaultRequestHeaders.Authorization = новый AuthenticationHeaderValue("Носитель", result.AccessToken); используя (var content = новый ByteArrayContent(imageBytes)) { content.Headers.ContentType = новый MediaTypeHeaderValue("application/octet-stream"); var ответ = ждут client.PostAsync("process_image/", контент, токен); если (ответ.IsSuccessStatusCode) { var raw = ожидайте ответа.Content.ReadFromJsonAsync(cancellationToken: токен); если (необработанное! = ноль) { resp = новый RunesPostResponse(); соотв.Аннотации = raw.annotations; соотв.Успех = сырой.успех; соотв.AnnotatedImage = Convert.FromBase64String(raw.annotatedImage); } } } } возврат соответственно; } поймать (исключение ex) { бросать; } } Перед вызовом этого кода успешно выполняется следующий код (в интерактивном режиме):
public async Task DoLogin (boolforceInteractive = false, токен CancellationToken = по умолчанию) { bool tryInteractive = ложь; если (!forceInteractive) { пытаться { учетные записи var = (ожидают ClientApplication.GetAccountsAsync(SignInSignOutPolicy)).ToList(); если (accounts.Any()) { результат вар = ждут ClientApplication.AcquireTokenSilent (новая строка [] {ApiScope}, account.First()).ExecuteAsync(); IsLoggedIn = !string.IsNullOrEmpty(result.AccessToken); tryInteractive = !IsLoggedIn; } еще попробоватьИнтерактив = правда; } улов (MsalUiRequiredException) { попробоватьИнтерактив = правда; } поймать (Исключение ex) { ждут Alert.Handle(ex.Message).GetAwaiter(); } } еще попробоватьИнтерактив = правда; если (попробуйтеИнтерактивно) { пытаться { var result = await ClientApplication.AcquireTokenInteractive (новая строка [] {ApiScope}) .WithPrompt(Prompt.SelectAccount).ExecuteAsync(токен); IsLoggedIn = !string.IsNullOrEmpty(result.AccessToken); } поймать (Исключение ex) { ждут Alert.Handle(ex.Message).GetAwaiter(); } } } } Я попробовал запустить следующий код, думая, что это проблема с кэшированием связки ключей iOS, но это не решило проблему:
частный async void ReactiveContentPage_Loaded (отправитель объекта, EventArgs e) { #если IOS SecureStorage.Default.RemoveAll(); #endif }
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение