Android - “连接到Google Play”仍然提供错误代码4?

时间:2015-03-07 19:30:44

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

我对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

干杯!

6 个答案:

答案 0 :(得分:1)

确保使用 SHA1 键。

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

要获取您的 SHA1 键,请按照以下步骤操作:

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

image: get your SHA1 key

答案 1 :(得分:0)

听起来您的游戏可能无法在游戏控制台中正确设置。有些事要检查:

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

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

  3. 链接的应用程序已将程序包配置为与AndroidManifest.xml中的程序包匹配
  4. 链接的应用程序已获得授权,其SHA1指纹与您用于签署应用程序的密钥库相匹配。
  5. 确保您用于登录的用户ID位于游戏的测试人员列表中。
  6. 如果您使用的是SavedGamesAPI,请确保在控制台上启用它。
  7. 您可以查看说明,以便在https://developers.google.com/games/services/android/quickstart#step_2_set_up_the_game_in_the_dev_console

    执行所有这些操作

答案 2 :(得分:0)

固定。

无数SIGN_IN_REQUIRED后,我设法分配了大量RESULT_APP_MISCONFIGURED

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

答案 3 :(得分:0)

如果它可以连接并在本地版本中正常运行,但是您从Play商店下载的版本不起作用(出现登录错误),这就是解决问题的方法。上载APK时,您将SHA1用于上载版本。上载APK后,Google会为您提供其他SHA1。 您需要将此NEW SHA1输入到您的凭证中。


请按照以下步骤操作:

  1. 转到Google Developer Console
  2. 单击所有应用程序>您的应用程序
  3. 转到发布管理>应用签名
  4. 请注意,这里有一个“上传证书”和一个“应用程序签名证书”。
  5. 从APP签名证书中复制SHA1。 (经过所有密钥库的严格训练,他们没有在文档中提及此部分!)
  6. 在游戏服务中创建一个新的连接应用,然后 在此处从应用程序签名证书上粘贴SHA1,并确保您的软件包名称正确无误。

现在一切正常!我不明白为什么没有对此进行明确记录。

答案 4 :(得分:0)

即使问了最初的问题已经四年了,我还是想增加我的2c值,因为我遇到了同样的问题,上述建议都没有为我解决。

为我解决的问题是,意识到将应用程序发布到Google Play商店时需要使用SHA1指纹,而在进行调试时则需要另外一个指纹。第一个会在您在Google Play控制台中设置您的应用时自动创建,并且是唯一的,但直到您发布应用后才会使用。您必须创建自己的调试程序,所有要调试的应用程序都相同。凭据的详细信息存储在您的Google API控制台中。

总而言之,您使用Google Play服务的每个应用在Google API控制台中都应具有两个OAuth客户端ID,一个用于调试,一个用于发行版本。在文档here中对此进行了充分的说明。

答案 5 :(得分:0)

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

sudo apt install adb

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