Google登录,但结果代码为0

Ste*_*ven 7 android webview google-play-services google-signin

我想为我的应用创建Google登录,但是我的结果代码onActivityResult()为0

在我的onCreate()方法中,我startSignInIntent()像这样启动函数:

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //some other stuff
        view.loadUrl(myURL);
        startSignInIntent();
}
Run Code Online (Sandbox Code Playgroud)

这是 startSignInIntent()

private void startSignInIntent() {
        GoogleSignInClient signInClient = GoogleSignIn.getClient(this,
                GoogleSignInOptions.DEFAULT_SIGN_IN);
        Intent intent = signInClient.getSignInIntent();
        startActivityForResult(intent, RC_SIGN_IN);
    }
Run Code Online (Sandbox Code Playgroud)

这是 onActivityResult()

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        Log.d(TAG, "data : " + resultCode + " | " + data  + " || " + RC_SIGN_IN + " ||| " + requestCode);
        if (requestCode == RC_SIGN_IN) {
            GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data);
            if (result.isSuccess()) {
                // The signed in account is stored in the result.
                GoogleSignInAccount signedInAccount = result.getSignInAccount();
            } else {
                String message = result.getStatus().getStatusMessage();
                if (message == null || message.isEmpty()) {
                    Toast.makeText(this, "Login failed", Toast.LENGTH_LONG).show();
                }
                new AlertDialog.Builder(this).setMessage(message)
                        .setNeutralButton(android.R.string.ok, null).show();
            }
        }
Run Code Online (Sandbox Code Playgroud)

这是登录功能的结果 onActivityResult()

0 | 意图{(有其他功能)} || 2 ||| 2

选择弹出窗口的帐户后,可以在其中选择我的帐户。我得到的屏幕是确定的,但是当我知道登录已经失败时。见照片: 在此处输入图片说明

Eug*_* P. 9

我遇到了相同的错误,requestCode始终为0(RESULT_CANCELED)。

决定要在Firebase控制台中启用Google登录。

Firebase控制台->您的项目->身份验证->提供程序-> Google->并将其打开。

就我而言,链接就像这样

https://console.firebase.google.com/u/0/project/ {项目名称} / authentication / providers

  • 这对我有用。谢谢。 (2认同)

Mr.*_*bot 6

尝试检查您是否为应用正确配置了正确的OAuth密钥。根据此相关SO帖子,OP注意到Auth密钥也与其他创建该问题的项目相关联。

您还可以检查以下尝试登录Android实施,以了解代码实施:

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

    // Result returned from launching the Intent from GoogleSignInClient.getSignInIntent(...);
    if (requestCode == RC_SIGN_IN) {
        // The Task returned from this call is always completed, no need to attach
        // a listener.
        Task<GoogleSignInAccount> task = GoogleSignIn.getSignedInAccountFromIntent(data);
        handleSignInResult(task);
    }
}
Run Code Online (Sandbox Code Playgroud)

另外,OP还提供了一些其他信息,您需要确保在测试APK时对它进行了签名。有关其详细信息,请参阅有关对您的应用程序签名的文档。

希望这可以帮助。


小智 5

确保将 OAuth 同意屏幕的发布状态设置为“生产中”状态,而不是“测试”状态