'android.content.Intent com.google.android.gms.auth.api.signin.GoogleSignInClient.getSignInIntent ()' для ссылки на пустой объект - PullRequest
0 голосов
/ 26 марта 2019

Я пытаюсь внедрить вход Google в свое приложение, но получаю эту ошибку 'android.content.Intent com.google.android.gms.auth.api.signin.GoogleSignInClient.getSignInIntent()' on a null object reference.

Я следовал учебному руководству на веб-сайте Firebase здесь -> https://firebase.google.com/docs/auth/android/google-signin

Вот мой код

private void googleSignIn() {

    Intent intent = googleSignInClient.getSignInIntent();
    startActivityForResult(intent, RC_SIGN_IN);
}

@Override
public void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    if (requestCode == RC_SIGN_IN) {
        Task<GoogleSignInAccount> task = GoogleSignIn.getSignedInAccountFromIntent(data);

        try {
            GoogleSignInAccount account = task.getResult(ApiException.class);
            firebaseAuthWithGoogle(Objects.requireNonNull(account));
        } catch (ApiException e) {
            Log.w("hhm", "Google signin failed", e);
        }
    }
}

Ответы [ 2 ]

1 голос
/ 14 июля 2019

да, у меня тоже были такие же проблемы, как у вас, и вот как я решил

 private Boolean checkgglogin(){
        GoogleSignInAccount account = GoogleSignIn.getLastSignedInAccount(this);
        if (account != null){
            return true;
        }else
            return false;
    }
//then add checkgglogin to if requestCode
// Result returned from launching the Intent from GoogleSignInClient.getSignInIntent(...);
        if (requestCode == RC_SIGN_IN && checkgglogin()) {
            // The Task returned from this call is always completed, no need to attach
            // a listener.
            Task<GoogleSignInAccount> task = GoogleSignIn.getSignedInAccountFromIntent(data);
            handleSignInResult(task);
        }
    }

1 голос
/ 27 марта 2019

Вы инициализировали googleSignInClient Объект?

Похоже, ваш googleSignInClient равен null и должен быть инициализирован:

1 - В методе onCreate вашего входа в систему настройте вход в Google. запросить пользовательские данные, необходимые для вашего приложения ...

2-Затем, также в методе onCreate вашей деятельности по входу создайте Объект GoogleSignInClient с указанными вами параметрами.

// Configure sign-in to request the user's ID, email address, and basic
// profile. ID and basic profile are included in DEFAULT_SIGN_IN.
GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
        .requestEmail()
        .build();

// Build a GoogleSignInClient with the options specified by gso.
googleSignInClient = GoogleSignIn.getClient(this, gso);

Ссылка

...