【问题标题】:Android - "Connecting to Google Play" still gives Error Code 4?Android - “连接到 Google Play”仍然给出错误代码 4?
【发布时间】:2023-03-10 01:47:01
【问题描述】:

我对 Google API 和 GoogleApiClient 类还有些陌生,所以我关注了 this tutorial,希望能够进行足够的设置以显示排行榜。

目前我已将此代码实现到我的游戏活动中。

public void onConnectionFailed(ConnectionResult arg0) {
    Log.d("fes", "error " + arg0.getErrorCode());
    if (!isGooglePlayIntentOpen && arg0.hasResolution()) {
        try {
            isGooglePlayIntentOpen = true;
            startIntentSenderForResult(arg0.getResolution()
                    .getIntentSender(), 10, null, 0, 0, 0);
        } catch (SendIntentException ex) {
            isGooglePlayIntentOpen = false;
            this.getApiClient().connect();
        }
    }
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == 10) {
        isGooglePlayIntentOpen = false;
        if (!this.getApiClient().isConnecting() && !this.getApiClient().isConnected()) {
            this.getApiClient().connect();
        }
    }
}

实际上,这确实会弹出一个小意图,上面写着“连接到 Google Play”,然后是一个帐户选择。符合预期。

但是,每次调用onConnectionFailed 时,错误代码似乎都是4

根据ConnectionResult,4 表示需要登录

什么给了?即使尝试在多个帐户上“登录”后,我仍然会收到相同的错误代码。我是否需要以某种方式将登录结果传递给我的GoogleApiClient

干杯!

【问题讨论】:

    标签: android google-api google-play-services google-play-games


    【解决方案1】:

    如果它在本地构建中连接并正常工作,但您从 Play 商店下载的版本不起作用(它会导致登录错误),那么您就是这样修复它的。当您上传 APK 时,您使用 SHA1 作为上传版本。在您上传 APK 后,Google 会为您提供不同的 SHA1。 您需要将此 NEW SHA1 输入到您的凭证中。


    请按以下步骤操作:

    1. 转到 Google 开发者控制台
    2. 单击所有应用程序 > 您的应用程序
    3. 转到发布管理 > 应用签名
    4. 注意有一个“上传证书”和一个“应用程序签名证书”。
    5. 从 APP 签名证书中复制 SHA1。 (毕竟密钥库的不严谨,他们没有在文档中提到这部分!)
    6. 在游戏服务中创建一个新的连接应用程序,然后 将应用签名证书中的 SHA1 粘贴到此处,并确保您的包名称正确。

    现在一切都应该正常了!我不明白为什么没有明确记录。

    【讨论】:

      【解决方案2】:

      听起来您的游戏可能未在 Play 游戏机中正确设置。需要检查的一些事项:

      1. 您的应用程序中的 appId 与控制台中的应用程序 id 匹配。

      2. 有一个链接到您的游戏的 Android 应用程序。

      3. 链接的应用程序的包配置为与您的 AndroidManifest.xml 中的包匹配
      4. 链接的应用程序已获得授权,并且具有与您用于签署应用程序的密钥库相匹配的 SHA1 指纹。
      5. 确保您用于登录的用户 ID 在您的游戏的测试人员列表中。
      6. 如果您使用的是 SavedGamesAPI,请确保在控制台上启用它。

      您可以在https://developers.google.com/games/services/android/quickstart#step_2_set_up_the_game_in_the_dev_console 查看执行所有这些操作的说明

      【讨论】:

      • 是否需要上传实际的 APK 才能进行测试?关于“链接应用程序”。
      • 不,您不需要上传您的 apk - 链接应用程序集(在 URL 中概述)将您在游戏控制台中的游戏元数据关联到应用程序(具有 SHA-1指纹。)
      【解决方案3】:

      固定。

      在得到无数SIGN_IN_REQUIRED之后,我设法分配了很多RESULT_APP_MISCONFIGURED

      解决方案?添加 ProGuard 异常 非常重要,如 here 所述。

      【讨论】:

        【解决方案4】:

        尽管问到最初的问题已经四年了,但我想加上我的 2c 价值,因为我遇到了同样的问题,而上述建议都没有为我解决这个问题。

        为我解决的问题是,当您的应用发布到 Google Play 商店时,您需要一个 SHA1 指纹,而在调试时需要一个不同的指纹。第一个是在您在 Google Play 控制台中设置应用程序时自动创建的,并且是独一无二的,但在您发布应用程序之前从未使用过。您必须自己创建调试程序,并且对于您正在调试的所有应用程序都是一样的。凭据的详细信息存储在您的 Google API 控制台中。

        总而言之,您拥有的每个使用 Google Play 服务的应用都应该在 Google API 控制台中有两个 OAuth 客户端 ID,一个用于调试,一个用于发布版本。如何做到这一点在文档here中有充分的解释。

        【讨论】:

          【解决方案5】:

          确保您使用 SHA1 密钥。

          命令“keytool -list -keystore [调试密钥库的路径]”可能会显示 SHA-256 密钥。

          要获取您的 SHA1 密钥,您可以按照以下步骤操作:

          1. 打开您的项目
          2. 点击“Gradle”(右侧)
          3. 选择您的模块
          4. 任务 -> android ->(双击)signingReport

          image: get your SHA1 key

          【讨论】:

            【解决方案6】:

            在我的情况下,我使用了错误的 SHA1,因为谷歌为我创建了一个。我谷歌控制台,当你打开一个应用程序/游戏去

            -> Setup
            -> App Integrity
            

            在这里您可以看到“应用签名密钥证书”和“上传密钥证书”。 当我从“应用程序签名密钥证书”添加 SHA1 时,开始工作。

            【讨论】:

              猜你喜欢
              • 2019-05-29
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2014-08-03
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多