FirebaseとGoogle認証を追加したアプリを作成しました。AndroidでGoogleSignInResultオブジェクトから名前とメールを表示するにはどうすればよいですか?
authStateListener = new FirebaseAuth.AuthStateListener() {
@Override
public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
FirebaseUser user = auth.getCurrentUser();
if (user != null) {
//
} else {
startActivityForResult(
AuthUI.getInstance()
.createSignInIntentBuilder()
.setIsSmartLockEnabled(false)
.setProviders(Arrays.asList(
new AuthUI.IdpConfig.Builder(AuthUI.EMAIL_PROVIDER).build(),
new AuthUI.IdpConfig.Builder(AuthUI.GOOGLE_PROVIDER).build(),
new AuthUI.IdpConfig.Builder(AuthUI.FACEBOOK_PROVIDER).build()))
.build(),
RC_SIGN_IN);
}
}
};
私がGoogle Sign In
ボタンをクリックすると、自分のアカウントに正しくログインしています。しかし、人の名前と電子メールを表示しようとすると、サインインされるとエラーが表示されます。私はonActivityResult
メソッドでこのコードを使用しています。acct
は常にnull
です。どこが間違っていますか?
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == RC_SIGN_IN) {
GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(getIntent());
GoogleSignInAccount acct = result.getSignInAccount(); //null
String personName = acct.getDisplayName();
String personEmail = acct.getEmail();
System.out.println(personName + "/" + personEmail);
}
}
これはエラーです:ATAL EXCEPTION: main java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=111, result=-1, data=Intent { (has extras) }} to activity ..... java.lang.NullPointerException
。 ありがとうございます!
デバッグの? –
'data'の値は' I/System.out:Intent {(have extras)} 'です。 'acct'だけが' null'です。 –
'data'値を出力しないでください。アプリケーションをデバッグし、' super.onActivityResult'行にブレークポイントを置き、 'requestCode'、' resultCode'、 'data'の値を見つけてください。 –