В android приложении используется авторизация через Google(firebase). Я получая извещение, что у некоторых пользователей не проходит авторизация. Понятия не имею почему, ведь у большинства все ОК!
Код выглядит так:
private void startSignin(){
mAuth = FirebaseAuth.getInstance();
// Check auth.
if (mAuth.getCurrentUser() == null) {
GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
.requestIdToken("my_web_auth_id")
.requestEmail()
.build();
GoogleSignInClient mGoogleSignInClient = GoogleSignIn.getClient(this, gso);
mGoogleSignInClient.signOut();// Что бы при повторной авторизации открывалось окно с выбором аккаунтов.
Intent signInIntent = mGoogleSignInClient.getSignInIntent();
startActivityForResult(signInIntent, AUTH_REQUEST);
}
else {
startMainActivity();
finish();
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == AUTH_REQUEST) {
if (resultCode == RESULT_OK) { // результат не ок!
Task<GoogleSignInAccount> task = GoogleSignIn.getSignedInAccountFromIntent(data);
try {
GoogleSignInAccount account = task.getResult(ApiException.class);
firebaseAuthWithGoogle(account);
} catch (ApiException e) {
Toast.makeText(context, context.getString(R.string.auth_fail), Toast.LENGTH_LONG).show();
Crashlytics.getInstance().core.logException(e);
startSignin();
}
}
else {
Toast.makeText(context, context.getString(R.string.auth_fail), Toast.LENGTH_LONG).show();
Crashlytics.getInstance().core.logException(
new Exception("onActivityResult/RESULT_CODE_FAIL/Unable Sing in with google")); // отправляю извещение.
startSignin();// пробуем еще раз.
}
}
}
И я бы не стал задавать вопрос, но в официальном туториале никто не делает проверку resultCode. А у меня как раз тут и выходит неполадка.
Вопрос в следующем: возможно resultCode(конкретно в этом случае) не всегда соответствует действительности и его не нужно здесь использовать?
Ну или что еще можно сделать? Потому что судя потому что ошибка приходит единожды, то со второго раза авторизация проходит, ну или пользователи сразу удалили приложение.
После startActivityForResult(signInIntent, AUTH_REQUEST); - стартует активность с выбором аккаунта, затем - экран затемняется на (0,5-1сек) что бы подключится. Если в этот момент нажать по экрану, то
resultCode == RESULT_CANCELED
при этом, если убрать проверку, то выбросится исключение:
com.google.android.gms.common.api.ApiException: 16
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
У меня есть большой массив, больше 64кб, я хочу закинуть его в ресурсы и юзать оттуда, как мне это сделать? Спасибо!