Я пытаюсь внедрить единый вход / выход OAuth в моем текущем приложении Android.
Я использую вкладки Chrome Custom
implementation 'com.android.support:customtabs:28.0.0'
Вход работает нормально, вкладки Chrome Customсохраните файлы cookie пользователей, и все процессы входа будут работать, как и ожидалось.
Новый вход:
- Очистка файлов cookie Chrome
- Очистка хранилища приложения
- Приложение Android загружает URL-адрес для входа с помощью пользовательской вкладки Chrome
- Пользователь должен ввести имя пользователя и пароль
- Перенаправить URL-адрес с пользовательской схемой «обратных вызовов» в мое приложение для Android, и яполучите действительный токен доступа.
ОБНОВЛЕНИЕ: Поскольку мои android-устройства получили обновление Chrome до версии 72, вышеуказанное перестало работать.См. Мой связанный вопрос SO , вопрос
Если в chrome есть политика безопасности, в которой он не разрешает перенаправления без взаимодействия с пользователем, почему я получаю новое намерение при загрузке первого URL-адреса для подписив чем есть подсказка = нет?На данный момент не было никакого взаимодействия с пользователем.Этот шаг все еще работает нормально даже после обновления до Chrome 72, которое прервало вход в систему с помощью prompt = login, и на этом втором шаге происходит взаимодействие с пользователем, так как пользователь не только должен вводить свое имя пользователя и пароль, после чего он нажимает накнопка входа в систему.
Когда я добавляю «согласие» к обоим запросам, появляется сообщение «подсказка = отсутствие согласия», а затем «подсказка = согласие на вход», пользователь может войти в систему, однако они представлены с «одобрением»."экран, прежде чем они смогут продолжить в моем приложении.Почему при добавлении «согласия» мой вход в систему работает?и откуда появляется экран «утверждения»?
Последующий вход в систему:
- Приложение загружает URL-адрес для входа с помощью пользовательской вкладки Chrome
- ChromeПользовательские файлы cookie пользовательских вкладок используются для «тихого входа» пользователя.
- Пользователь входит в приложение Android
У меня проблема с выходом из системы.
Когда пользователь нажимает кнопку «Выйти» в моем приложении, приложение загружает выход URL
через пользовательскую вкладку Chrome, но он «застревает».Экран, который видит пользователь, представляет собой пустой белый экран.
Я полагаю, что это связано с ограничениями безопасности пользовательских вкладок Chrome, упомянутыми в этом вопросе SO Застревание CCT ...
точнее, это утверждение:
Chrome применяет политику, согласно которой перенаправления будут отправляться в ваше приложение, только если перенаправление было инициировано действием пользователя, таким как отправка формы с перенаправлением или нажатие нассылка.
Я вижу, что наши пользователи всегда могут войти в систему без каких-либо проблем, даже при отсутствии взаимодействия с пользователем, где, например, когда мы пытаемся загрузить URL для выхода из системы с помощью CCTмы всегда получаем «STUCK» на пустой странице CCT.
Я не понимаю, почему работает тихий вход, а «программный» выход не работает, хотя ни один из них не взаимодействует с пользователемучастие.
Если бы мне пришлось угадывать, я бы сказал, что вход в систему работает, когда CCT обнаруживает пользовательские куки-файлы и признает, что они могут быть сохранены только сВзаимодействие с пользователем.
Где, поскольку при выходе из системы вообще не было взаимодействия с пользователем.
Как решить проблему с выходом из CCT?
Буду ли я нуждатьсязагрузить URL-адрес веб-страницы, на которой размещена кнопка «Выйти»?