У меня есть приложение Xamarin.Forms, которое аутентифицирует пользователя в Azure AAD с использованием ADAL (Microsoft.IdentityModel.Clients.ActiveDirectory
).Это все работает нормально, но на Android ориентация устройства теряет электронную почту пользователя на экране аутентификации Microsoft.
Здесь я нахожусь в портретном режиме, и я ввел электронную почту пользователя:
![enter image description here](https://i.stack.imgur.com/ENy7O.png)
При нажатии кнопки Далее на экране появляется запрос на ввод пароля.Если я сейчас поверну устройство на Android, оно вернется к пустому экрану выше, электронная почта пользователя, которую я ввел выше, будет потеряна:
![enter image description here](https://i.stack.imgur.com/98dFL.png)
Вращение устройства не должно возвращать пользователя назад и снова запрашивать электронную почту пользователя.Он должен оставаться в приглашении ввода пароля.
Как предотвратить повторный запрос ротации для электронной почты пользователя?Я не хочу отключать ротацию, я просто хочу, чтобы он не возвращал меня обратно на экран, который снова запрашивает электронную почту пользователя.
Это приложение 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