当“使用其他帐户”登录时,Google Sign in 不会返回任何结果

2024-03-01

这似乎是一个基本功能,但遵循登录教程 https://developers.google.com/identity/sign-in/android/sign-in,仅当我选择设备上已注册的帐户时,它才有效。

选择后'使用另一个帐户'并完成一些步骤来验证它会丢失回调结果,(onActivityResult is 没有被调用).

I use GoogleSignInOptions:没有发生异常,我无法添加任何侦听器来检测异常。

然而,GoogleApiClient工作正常,但有一些已弃用的方法,因此我决定切换到GoogleSignInOptions以避免弃用问题。
初始化:

googleSignInOptions = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
                .requestEmail()
                .build();

googleSignInClient = GoogleSignIn.getClient(this, googleSignInOptions);

当点击时:

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

private void signIn() {
        googleSignInClient.signOut();
        Intent signInIntent = googleSignInClient.getSignInIntent();
        startActivityForResult(signInIntent, 123);
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (requestCode == 123 && data != null) {
            handleSignInResult(data);
        }
    }

    private void handleSignInResult(Intent data) {
        Task<GoogleSignInAccount> signInTask = GoogleSignIn.getSignedInAccountFromIntent(data);
        try {
            GoogleSignInAccount googleSignInAccount = signInTask.getResult(ApiException.class);
            if (googleSignInAccount != null) {
                updateUI(googleSignInAccount);
            }
        } catch (ApiException e) {
            e.printStackTrace();
        }
    }

有人可以帮忙吗?


更新:此错误现已在 Oauth2 库中修复


所以我也遇到了同样的问题。我发现这是一个开放问题 https://github.com/googlesamples/google-services/issues/358三月份的报告回来了。所以这可能不是您的代码的问题。

我发现了另一个有关的 stackoverflow 问题Oauth2 和 googleAuthUtil 之间的区别 https://stackoverflow.com/questions/22142641/access-to-google-api-googleaccountcredential-usingoauth2-vs-googleauthutil-get,使用提到的其他库,我发现这个错误不存在。

我把这个包导入到我的gradle中

implementation('com.google.api-client:google-api-client-android:1.23.0') {
    exclude group: 'org.apache.httpcomponents'
}

并进行身份验证GoogleAccountCredential object.

    GoogleAccountCredential credential = new GoogleAccountCredential(context, scope);
    startActivityForResult(credential.newChooseAccountIntent(), resultCode);

你需要GET_ACCOUNTS对此方法的许可。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

当“使用其他帐户”登录时,Google Sign in 不会返回任何结果 的相关文章

随机推荐