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

Posted

技术标签:

【中文标题】Google Play 游戏服务登录错误:ApiException:4【英文标题】:Google Play Games services SignIn error : ApiException :4 【发布时间】:2019-09-16 07:51:43 【问题描述】:

我正在 android 工作室开发一个应用程序,该应用程序使用 Google Play 游戏服务获取成就和排行榜,但我在尝试登录时遇到错误。我按照文档操作,我的所有密钥和 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)

这是用于登录 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();
    
  

【问题讨论】:

【参考方案1】:

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

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

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

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

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

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

【讨论】:

嗨,我尝试了你的建议,但到目前为止没有运气。你有另一个机会吗?我仍然无法登录。这让我抓狂。还是谢谢 请问您等了多久?我记得在我在正确的位置获得正确的 SHA1 代码后,它可能需要一个小时才能开始工作。另外,在我开始工作之前,当我登录时,当我想登录时弹出绿色的谷歌播放矩形,但我仍然收到错误。如果这种情况发生在你身上,那就意味着你离你更近了一点。 我等了大约 3 个小时。当我尝试登录时,我会弹出带有动画的绿色,但是当动画结束时,我会收到上面的错误代码。即使我尝试了上面提到的所有方法,我仍然遇到同样的错误。此外,我之前使用 Google Play 游戏服务(运行良好)发布了应用程序,但我从未遇到过此类错误。我不知道我会尝试直到成功。 您不会在任何地方执行 signInClient.silientSignIn() 吗?另外,在 onActivityResult 中,尝试登录到控制台 GoogleSignIn.getLastSignedInAccount(this) 以查看它是否为空,如果不是,您也许可以使用它。同样在 onActivityResult 中,我得到的 GoogleSignInAccount 有点不同(它可能会产生相同的结果,但可能值得一试):github.com/retrodaredevil/track-shooter/blob/…(第 124 行) 我在 onCreate 方法中使用了silentSignin,所以当用户进入应用程序时,如果没有人登录,它就会被触发。感谢您的建议,我现在试试:D。【参考方案2】:

我将我的 app_id 添加到资源文件夹并在我的清单中我去了@string/app_id,现在从 Api 获得了成功,将进一步测试以查看结果是否有效。

【讨论】:

以上是关于Google Play 游戏服务登录错误:ApiException:4的主要内容,如果未能解决你的问题,请参考以下文章

Google play 服务游戏静默登录错误 'com.google.android.gms.common.api.ApiException: 4:'

使用 Google Apps 帐户登录时,在 Android 上对 Google Play 游戏服务进行身份验证会导致错误

无法登录 google play 游戏服务 API

无法登录 Google Play 游戏服务:必须有游戏 ID 才能登录

Google Play 游戏服务错误:无法登录 - 应用程序没有注册的客户端 ID?其他修复无效

Unity Google Play 游戏插件:错误未授权