Задать вопрос
PageUp
@PageUp
Default

Как оптимизировать устаревший Sing-in Google?

Помогите оптимизировать код под новые реалии.
SHA-1 сертификат приложения в консоли Google ввел.
Получил Client ID. что с ним делать не знаю.
Сейчас и startActivityForResult считается устаревшей, и Google Новые методы обработки предлагает.
Пробовал пошагово, так вообще приложение перестало запускаться.
В Java полный 0, до этого лишь PHP 8 юзал все время, да и авторизация была через Auth 2.0, до того времени пока Гугл вот не ввел обязательным условием регистрацию именно через приложение, а уже потом связь с серверной частью.

В авторизации форма работает, выдает экран авторизации, выбора пользователя, пишет имя приложения, его логотип, в общем все как и должно быть, но когда выбираешь свой акк и возвращает в приложение, то все время выдает условие:
Toast.makeText(getApplicationContext(), "Something went wrong", Toast.LENGTH_SHORT).show();


То есть не авторизуется пользователь, данные не принимаются.

Код, который нужно оптимизировать:

public class MainActivity extends AppCompatActivity {

    GoogleSignInOptions gso;
    GoogleSignInClient gsc;
    ImageView googleBtn;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        googleBtn = findViewById(R.id.google_btn);

        gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN).requestEmail().build();
        gsc = GoogleSignIn.getClient(this,gso);

        GoogleSignInAccount acct = GoogleSignIn.getLastSignedInAccount(this);
        if(acct!=null){
            navigateToSecondActivity();
        }


        googleBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                signIn();
            }
        });



    }

    void signIn(){
        Intent signInIntent = gsc.getSignInIntent();
        startActivityForResult(signInIntent,1000);
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode,Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if(requestCode == 1000){
            Task<GoogleSignInAccount> task = GoogleSignIn.getSignedInAccountFromIntent(data);

            try {
                task.getResult(ApiException.class);
                navigateToSecondActivity();
            } catch (ApiException e) {
                Toast.makeText(getApplicationContext(), "Something went wrong", Toast.LENGTH_SHORT).show();
            }
        }

    }


P.S. Авторизация в эмуляторе Android Studio срабывает, как и положено.
А вот если создать приложение и запустить на телефоне, то авторизация почему-то не срабатывает и приводит к результату описанному выше.

Похоже проблема именно в устаревшем методе, который в коде отображается перечеркнуто: startActivityForResult

Так как во время компиляции появляются 2 ошибки:
Note: .... MainActivity.java uses or overrides a deprecated API.
Note: Recompile with -Xlint:deprecation for details.

Именно в MainActivity.java находится startActivityForResult которая как раз отвечает за API.

Собственно вопрос, чем ее заменить и как?
  • Вопрос задан
  • 211 просмотров
Подписаться 1 Простой 8 комментариев
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы