РЕДАКТИРОВАТЬ 2
Возможно, эта проблема решается созданием «ID клиентов OAuth 2.0» для Android.
Этот идентификатор должен быть создан на этой странице
https://console.developers.google.com/apis/credentials
Расследование продолжается ..
EDIT
Я думаю, что это связано с этим https://wordpress.org/support/topic/be-careful-everybody-who-is-using-oauth-2-0-to-access-gmail-google-gsuite-apis/
Как мне сделать так, чтобы мое приложение было одобрено для использования oauth2: https://mail.google.com/ scope ?
Отзыв затронутого пользователя - является ли это причиной?
Он создал много аккаунтов Google (для некоторых тестов).
Может ли это быть связано с слишком большим количеством созданных учетных записей Google, учетных записей, которые «связаны» с его первоначальным адресом электронной почты (для восстановления используется тот же исходный аккаунт)? Неправильное предположение
Мое почтовое приложение использует AccountManager для доступа к GMail (с OAuthToken) и работает нормально (с 2102), за исключением того, что у меня теперь есть своеобразное исключение, которое происходит только с определенной учетной записью Google
Кажется, это совершенно новое поведение
Вот ошибка:
W/System.err: android.accounts.AuthenticatorException: ServiceDisabled
W/System.err: at android.accounts.AccountManager.convertErrorToException(AccountManager.java:2507)
W/System.err: at android.accounts.AccountManager.-wrap0(Unknown Source:0)
W/System.err: at android.accounts.AccountManager$AmsTask$Response.onError(AccountManager.java:2350)
W/System.err: at android.accounts.IAccountManagerResponse$Stub.onTransact(IAccountManagerResponse.java:69)
W/System.err: at android.os.Binder.execTransact(Binder.java:697)
Вопросы:
- Что точно означает ошибку "android.accounts.AuthenticatorException: ServiceDisabled "?
- С какой стати это происходит только с этим аккаунтом Google? (и, возможно, для некоторых других, но, по отзывам пользователей, это кажется очень редким). Должен ли я проверить некоторые настройки учетной записи Google Android для этой учетной записи ..? Какие из них?
Итак, один и тот же код подходит для примерно 10 учетных записей, которые я тестировал на своем телефоне, и он не работает с этой очень специфической учетной записью Google! Почему?
К вашему сведению, я открыл вопрос здесь: https://issuetracker.google.com/issues/127454208
Примечание:
По словам владельца этой учетной записи, приложение работало раньше и внезапно перестало работать: я нахожусь в процессе расследования, когда это происходит, и может ли он дать мне некоторые подсказки о некоторых возможных действиях, которые он предпринял в то время.
Заранее спасибо за помощь.
Некоторая информация, которую я собрал:
Мне удалось немного отладить это и обнаружил, что трассировка стека идет дальше в cpp:
jboolean res = env->CallBooleanMethod(mObject, gBinderOffsets.mExecTransact,
code, (int32_t)&data, (int32_t)reply, flags);
https://android.googlesource.com/platform/frameworks/base/+/f76a50c/core/jni/android_util_Binder.cpp
Я обнаружил, что "res = onTransact (код, данные, ответ, флаги);" (то есть android.accounts.IAccountManagerResponse $ Stub.onTransact (IAccountManagerResponse.java:69) из AIDL) вызывается с
code = 2 (probably android.accounts.AccountManager.VISIBILITY_USER_MANAGED_VISIBLE = 2)
data : a Parcel Object
reply : another Parcel Object
flags = 17
Что, кажется, хорошо, и работает для всех других учетных записей Google!
Я также узнал, что код ошибки в AccountManager.convertErrorToException
был код ERROR_CODE_INVALID_RESPONSE