Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/182.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Android显示Google SignInResult对象的名称和电子邮件?_Android_Firebase_Firebase Authentication_Google Authentication - Fatal编程技术网

如何使用Android显示Google SignInResult对象的名称和电子邮件?

如何使用Android显示Google SignInResult对象的名称和电子邮件?,android,firebase,firebase-authentication,google-authentication,Android,Firebase,Firebase Authentication,Google Authentication,我已经创建了一个应用程序,其中a添加了Firebase和Google身份验证 authStateListener = new FirebaseAuth.AuthStateListener() { @Override public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) { FirebaseUser user = auth.getCurrentUser();

我已经创建了一个应用程序,其中a添加了Firebase和Google身份验证

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);
            }
        }
    };
当我单击
谷歌登录
按钮时,我已正确登录到我的帐户。但是当试图显示此人的姓名和电子邮件时,一旦登录,我就会收到一个错误。我在我的
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异常:main java.lang.RuntimeException:未能将结果ResultInfo{who=null,request=111,result=-1,data=Intent{(has extras)}}传递到活动。。。。。java.lang.NullPointerException

提前谢谢

感觉登录不成功。尝试检查resultCode==RESULT\u OK以及请求代码。

错误似乎是将
getIntent
作为参数传递给
Auth.GoogleSignInApi.getSignInResultFromIntent(getIntent())
here
getIntent()
返回活动意图。您应该将
getIntent()
替换为来自
onActivityResult
data

Auth.GoogleSignInApi.getSignInResultFromIntent(data);
同时添加
RESULT\u OK
,如下所示:

 if (requestCode == RC_SIGN_IN && resultCode == Activity.RESULT_OK)

谢谢你的回答,但我该怎么做呢?@Majeed Khan你可以看到@Alex M发布的错误日志。其中
result=-1
,意思是
resultCode==result\u OK
这已经是真的了。谢谢,但我得到了同样的错误,即使我像你说的那样改变。在调试时首先看到
数据在
onActivityResult
中有一些值?
数据有一个值:
i/System.out:Intent{(has extras)}
。只有
acct
null
。不要打印
data
值。调试你的应用程序并在
super.onActivityResult
行上放置一个断点,找出
requestCode
resultCode
数据的值。
data
requestCode
都正常。
resultCode
的值为
-1
。发生了什么事?
resultCode
=-1表示结果正常。如果
数据
不为空,您可以查看
数据的调试值。获取额外信息
,或者在调试时尝试评估
数据
的所有建议。您肯定会在
数据
中得到一些东西。