Google Play 游戏服务登录错误:ApiException:4

Big*_*ica 5 android google-play-services google-play-games

我正在 Android studio 中开发一个应用程序,该应用程序使用 Google Play Games 服务来获取成就和排行榜,但我在尝试登录时收到错误。我按照文档操作,我的所有密钥和 OAuth 代码都匹配并且仍然当我尝试登录时收到此错误:

com.google.android.gms.common.api.ApiException:4:4:

我到处寻找答案,重新启动所有凭据,取消发布,然后发布所需的所有新内容,检查所有 ID。如果有人能给我一些关于还可以尝试什么的建议,我将非常感激。

com.google.android.gms.common.api.ApiException: 4: 4: 
    at com.google.android.gms.common.internal.ApiExceptionUtil.fromStatus(Unknown Source)
    at com.google.android.gms.common.internal.zai.zaf(Unknown Source)
    at com.google.android.gms.common.internal.zaj.onComplete(Unknown Source)
    at com.google.android.gms.common.api.internal.BasePendingResult.zaa(Unknown Source)
    at com.google.android.gms.common.api.internal.BasePendingResult.setResult(Unknown Source)
    at com.google.android.gms.auth.api.signin.internal.zzj.zzc(Unknown Source)
    at com.google.android.gms.auth.api.signin.internal.zzt.dispatchTransaction(Unknown Source)
    at com.google.android.gms.internal.auth-api.zzd.onTransact(Unknown Source)
    at android.os.Binder.execTransact(Binder.java:461)
Run Code Online (Sandbox Code Playgroud)

这是 Google 文档中用于登录的代码。

private void startSignInIntent() {
    GoogleSignInClient signInClient = GoogleSignIn.getClient(
        this, GoogleSignInOptions.DEFAULT_GAMES_SIGN_IN
    );
    Intent intent = signInClient.getSignInIntent();
    startActivityForResult(intent, RC_SIGN_IN);
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    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()) {
                message = getString(R.string.signin_other_error);
            }
            new AlertDialog.Builder(this)
                .setMessage(message)
                .setNeutralButton(android.R.string.ok, null)
                .show();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

ret*_*vil 4

当我遇到这个问题时,我必须做两件事:

  1. 签署我的应用程序(通常使用我的发布密钥)并使用 adb 将应用程序部署到我的手机

  2. 转到 console.developers.google.com,转到凭据部分,转到 OAuth 2.0 客户端 ID,找到我的应用程序,单击它,然后输入发布密钥中的 SHA1 密钥。

另外,对于遇到此问题的其他人来说,值得注意的是,您必须先使用 OP 正在执行的操作,然后才能执行silentSignIn。OP,你不必担心这个。

编辑:没关系,看起来是silentSignIn 导致了OP 问题。

第二次编辑:我认为这个答案有些错误。我想你可以在这里找到正确的答案:https ://stackoverflow.com/a/56463302/5434860