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

5
我正在使用谷歌游戏服务的静默登录,但它总是通过CompleteListener显示com.google.android.gms.common.api.ApiException: 4:'SIGN_IN_REQUIRED',但我是应用程序中的测试用户。我的代码如下,
 @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        mGoogleSignInClient = GoogleSignIn.getClient(this, new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_GAMES_SIGN_IN).build());
}

@Override
   protected void onResume() {
       super.onResume();
       signInSilently();
}

private void signInSilently() {

    mGoogleSignInClient.silentSignIn().addOnCompleteListener(this, new OnCompleteListener<GoogleSignInAccount>() {
    @Override
       public void onComplete(@NonNull Task<GoogleSignInAccount> task) {
           if (task.isSuccessful()) {
              try {
                   GoogleSignInAccount signInAccount = task.getResult(ApiException.class);
              } catch (ApiException apiException) {
                   System.out.println("CATE_RESULT_CODE " + apiException.getLocalizedMessage()+" " +apiException.getStatusMessage()+ " " +apiException.getMessage()+ " "+apiException.getCause() );
              }
           } else {
                try {
                    GoogleSignInAccount signInAccount = task.getResult(ApiException.class);
                } catch (ApiException apiException) {
                      System.out.println("CATE_RESULT_CODE " + apiException.getLocalizedMessage()+" " +apiException.getStatusMessage()+ " " +apiException.getMessage()+ " "+apiException.getCause() );
                }
           }
        }
     });
  }

我的Gradle文件依赖:

dependencies {
 ext {
    support_library_version = '27.0.2'
    google_play_services_version = '15.0.2'
  }
    implementation "com.android.support:appcompat-v7:${support_library_version}"
    implementation "com.android.support:design:${support_library_version}"
     implementation "com.android.support:recyclerview-v7:${support_library_version}"
     implementation "com.android.support:cardview-v7:${support_library_version}"
     implementation 'com.google.android.gms:play-services-auth:15.0.1'
     implementation 'com.google.android.gms:play-services-games:15.0.1'
 }

 erorr :
  com.google.android.gms.common.api.ApiException: 4: 
    at com.google.android.gms.common.internal.ApiExceptionUtil.fromStatus(Unknown Source)
    at com.google.android.gms.common.internal.zzk.convert(Unknown Source)
    at com.google.android.gms.common.internal.zzl.onComplete(Unknown Source)
    at com.google.android.gms.common.api.internal.BasePendingResult.zza(Unknown Source)
    at com.google.android.gms.common.api.internal.BasePendingResult.setResult(Unknown Source)
    at com.google.android.gms.auth.api.signin.internal.zzk.zzd(Unknown Source)
    at com.google.android.gms.auth.api.signin.internal.zzu.dispatchTransaction(Unknown Source)
    at com.google.android.gms.internal.auth.zze.onTransact(Unknown Source)
    at android.os.Binder.execTransact(Binder.java:404)
    at dalvik.system.NativeStart.run(Native Method)

还需在Manifest文件中添加应用程序ID。

请给我一个解决此问题的方案。提前感谢。


请有人给我一个解决方案。 - Mathan Chinna
错误将被解决。 - Mathan Chinna
这里也有同样的问题,似乎Firebase没有保存SHA-1密钥。 - phcaze
4个回答

1

错误将被解决...

如果有人遇到这种问题,请先检查 Firebase 项目设置中的 SHA1 密钥。

我的 SHA1 密钥与 Firebase 项目设置不匹配。

现在我已更改,一切正常运作。

谢谢。


1
请问您能否详细说明一下您是如何修复这个错误的,以及在哪里获取SHA1密钥并将其复制到哪里? - Kiryl Tkach
在你的 Android Studio 中获取 SHA1,然后从Firebase设置中进入你的项目-->添加指纹,在那里放置你的SHA1密钥。 - Mathan Chinna
@MathanChinna,我的应用程序没有Firebase项目,那么兄弟你知道如何解决这个问题吗? - MSARKrish
你的问题中没有任何迹象表明你使用Firebase。不仅问题标签上没有Firebase标签,而且在你的build.gradle片段中我甚至没有看到任何Firebase的依赖。 - Csaba Toth
我遇到了相同的问题,尽管SHA-1是相同的。 - Usman Rana
显示剩余2条评论

1

按照以下步骤操作,直到在Android Studio中获取SHA-1

https://dev59.com/hmUo5IYBdhLWcg3w2CWJ#33479550

然后前往此链接

https://console.firebase.google.com/

  1. 在Firebase左上角的Logo下方的Project Overview旁边,点击设置齿轮图标
  2. 点击项目设置,并确保您在通用选项卡中的下拉列表中选择了正确的项目。
  3. 向下滚动并查找SHA证书指纹
  4. 点击添加指纹复制并粘贴来自Android Studio控制台的SHA-1到证书指纹列中,然后点击保存
  5. 重新启动需要Firebase和Google登录的应用程序。

完成。


0
原来每当您添加/编辑您的Firebase应用程序设置(SHA证书指纹)时,它会在您的应用程序Google Api控制台中生成相应的凭据。尽管指纹是相同的,但直到我从Google Api中删除了凭据并让Firebase为我生成它,它才起作用 - 我想这与ID有关。

0

我的解决方案是同步我的项目,以便它获取更新的 SHA。

  • 下载更新的 google-services.json 文件。
  • 将其放置在您的 Android Studio 项目中,即 app 文件夹中。
  • 在 IDE Andorid Studio 的顶部菜单中,选择 File-> Sync Project with Gradel Files。

解决方案。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接