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 游戏服务:必须有游戏 ID 才能登录