Помогите оптимизировать код под новые реалии.
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.
Собственно вопрос, чем ее заменить и как?