Экран входа в систему Azure AD (ADAL) теряет введенный адрес электронной почты пользователя при ориентации устройства в Android Only-XamarinForms.Android - PullRequest
0 голосов
/ 29 июня 2019

У меня есть приложение Xamarin.Forms, которое аутентифицирует пользователя в Azure AAD с использованием ADAL (Microsoft.IdentityModel.Clients.ActiveDirectory).Это все работает нормально, но на Android ориентация устройства теряет электронную почту пользователя на экране аутентификации Microsoft.

Здесь я нахожусь в портретном режиме, и я ввел электронную почту пользователя:

enter image description here

При нажатии кнопки Далее на экране появляется запрос на ввод пароля.Если я сейчас поверну устройство на Android, оно вернется к пустому экрану выше, электронная почта пользователя, которую я ввел выше, будет потеряна:

enter image description here

Вращение устройства не должно возвращать пользователя назад и снова запрашивать электронную почту пользователя.Он должен оставаться в приглашении ввода пароля.

Как предотвратить повторный запрос ротации для электронной почты пользователя?Я не хочу отключать ротацию, я просто хочу, чтобы он не возвращал меня обратно на экран, который снова запрашивает электронную почту пользователя.

Это приложение Xamarin.Forms, и у моей MainActivity уже есть атрибут ConfigChages.Orientationкак ниже;однако это не решает проблему:

[Activity(Name = "my.mainactivity"
, Label = "MyApp"
, Icon = "@drawable/icon"
, ConfigurationChanges = ConfigChanges.ScreenSize 
    | ConfigChanges.SmallestScreenSize 
    | ConfigChanges.ScreenLayout 
    | ConfigChanges.Orientation)]
public class MainActivity : Xamarin.Forms.Platform.Android.FormsAppCompatActivity
{
   ...
}

ОБНОВЛЕНИЕ

Даже если я замораживаю ориентацию на Portrait до вызова AcquireTokenAsync и размораживаю ее после того, как вызов получает ответ, он по-прежнему ведет себя так же - он по-прежнему будет поворачивать страницу входа Microsoft, даже если я замораживаю его родитель (MainActivity) в Portrait (владелец которого передан в PlatformParameters вызову AcquireTokenAsync. Итак, моя активность остается в портретной, но этот знак-in страница по-прежнему вращается и теряет данные. Похоже, что веб-приложение, которое Microsoft использует для внутреннего использования в AcquireTokenAsync, не следует настройкам ориентации для действия, переданного в PlatformParameters для AcquireTokenAsync.

Подтверждено Microsoft, что это их внутренние проблемы.вы также сталкиваетесь с этой проблемой на Android, где ротация устройств возвращает вас назад, чтобы запросить электронную почту пользователя, вы можете следить за ходом исправлений для ADAL и MSAL здесь:

https://github.com/AzureAD/azure-activedirectory-library-for-dotnet/issues/1622 https://github.com/xamarin/xamarin-android/issues/3326

1 Ответ

0 голосов
/ 02 июля 2019

Я использую Entry рядом со мной, добавив ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation , работает нормально.

Если у вас все еще есть эта проблема, я предлагаю вам выполнить следующие шаги:

1. На формах PCL вы можете переопределить OnSizeAllocated для проверки ориентации экрана, например:

Как определить ориентацию экрана устройства в Xamarin.Forms?

2.На формах PCL и Android вы можете использовать MessageCener для подписки и отправки данных

3. Переопределить метод onSaveInstanceState () и onRestoreInstanceState (), например:

Управление поворотом экрана без потери данных - Android

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...