У меня есть приложение android, реализующее azure mobile SDK (com. Microsoft. azure: azure -mobile- android: 3.5. 1@aar). В моем приложении я использую аутентификацию Google метод с refre sh токенами (как описано в Azure документации по мобильным приложениям ). Аутентификация работала нормально в течение почти 2 лет. В течение последних 10 дней (без изменений) мои пользователи больше не могут обновлять sh свои токены авторизации, если последний повторный sh был сделан через 60 минут или более go. Refre sh завершается успешно, только если он вызывается раньше, чем через 1 час. Если refre sh не удается, как это часто бывает, я должен заставить пользователя снова войти в систему с помощью экрана согласия Google, чтобы получить новый токен. Этого не было раньше, так как токены могли обновляться даже через несколько дней после последнего обновления sh. Что может быть не так? Мой Azure План обслуживания имеет тип D1: Общий.
Пользователи видят это сообщение об ошибке на своем устройстве android, если метод refreshUser () вызывается более чем через 1 час после последнего обновления sh :
Refre аутентификации Google sh не удалось. Ссылка sh завершилась с 401 несанкционированной ошибкой. Учетные данные больше не действительны.
В потоке журналов (на портале. azure) я вижу следующее сообщение:
Ошибка HTTP 401.83 - Несанкционировано. У вас нет прав для просмотра этого каталога. или page.Скорее всего, причина: у прошедшего проверку пользователя нет доступа к ресурсу, необходимому для обработки запроса. Можно попробовать следующее: создать правило трассировки для отслеживания неудачных запросов для этого кода состояния HTTP.
Это мой метод аутентификации:
private void authenticate() {
// Sign in using the Google provider.
HashMap parameters = new HashMap<>();
parameters.put("access_type", "offline");
parameters.put("prompt", "consent");
mClient.login(MobileServiceAuthenticationProvider.Google, url_scheme_of_your_app, GOOGLE_LOGIN_REQUEST_CODE, parameters);
}
Это мой метод refre sh в соответствии с документацией для мобильных приложений:
private void refreshToken(){mClient.refreshUser(new UserAuthenticationCallback() {
@Override
public void onCompleted(MobileServiceUser user, Exception exception, ServiceFilterResponse response) {
if (user != null && exception == null) {
/*refresh succeeded*/
} else {
/*refresh failed*/
String message = "+"%s authentication refresh failed.Error: %s", "Google",exception.getMessage())";}}}); }
Настройки аутентификации в портале Azure: