Android - "Connecting to Google Play" 仍然给出错误代码 4?
Android - "Connecting to Google Play" still gives Error Code 4?
我对 Google API 和 GoogleApiClient
class 还是有点陌生,所以我关注了 this tutorial 希望能够充分设置以显示排行榜。
目前我已经在我的游戏中实现了这段代码activity。
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();
}
}
}
事实上,这确实会弹出一个小意图,上面写着 "Connecting to Google Play",然后选择一个帐户。符合预期。
但是,每次调用 onConnectionFailed
时,错误代码似乎是 4。
根据 ConnectionResult
,4 表示 需要登录。
什么给了?即使在多个帐户上尝试 "sign in" 之后,我仍然会收到相同的错误代码。我是否需要以某种方式将登录结果传递给我的 GoogleApiClient
?
干杯!
听起来您的游戏可能没有在 Play 游戏机中正确设置。要检查的一些事项:
您的应用程序中的 appId 与控制台中的应用程序 ID 匹配。
有一个链接到您的游戏的 Android 应用程序。
- 链接的应用程序已将包配置为与您的 AndroidManifest.xml
中的包相匹配
- 链接的应用程序已获得授权,并且具有与您用于签署应用程序的密钥库相匹配的 SHA1 指纹。
- 确保您用于登录的用户 ID 在您游戏的测试人员列表中。
- 如果您正在使用 SavedGamesAPI,请确保它已在控制台上启用。
查看执行所有这些操作的说明
已修复。
获得无数后SIGN_IN_REQUIRED
我分配了很多RESULT_APP_MISCONFIGURED
。
解决办法?添加 ProGuard 异常 非常重要,如 here.
所述
如果它在本地构建中连接并正常工作,但您从 Play 商店下载的版本不工作(它给出登录错误),这就是您修复它的方法。当您上传 APK 时,您使用 SHA1 作为上传版本。 Google 在您上传您的 APK 后给您一个不同的 SHA1。
您需要将这个新的 SHA1 输入到您的凭据中。
按照以下步骤操作:
- 转到Google开发者控制台
- 单击所有应用程序 > 您的应用程序
- 转到发布管理 > 应用签名
- 注意有一个 "Upload Certificate" 和一个 "App Signing Certificate"。
- 从应用程序签名证书中复制 SHA1。 (在所有这些密钥库死板的代码之后,他们没有在文档中提及这部分!)
- 在游戏服务中创建一个新的连接应用,然后
将应用程序签名证书中的 SHA1 粘贴到此处,并确保您的程序包名称正确无误。
现在一切正常!我不明白为什么没有清楚地记录下来。
即使距离提出最初的问题已经四年了,我还是想加上我的 2c 价值,因为我遇到了同样的问题,none 上述建议为我解决了这个问题。
对我来说解决这个问题的是意识到当你的应用程序发布到 Google Play 商店时你需要一个 SHA1 指纹,而当你调试时需要一个不同的指纹。第一个是在 Google Play 控制台中设置应用时自动创建的,并且是唯一的,但在您发布应用之前不会使用。您必须自己创建调试器,并且对于您正在调试的所有应用程序都是一样的。凭据的详细信息存储在您的 Google API 控制台中。
总而言之,您拥有的每个使用 Google Play 服务的应用都应该在 Google API 控制台中有两个 OAuth 客户端 ID,一个用于调试,一个用于发布版本.如何做到这一点在文档 here.
中有充分的解释
确保使用 SHA1 密钥。
命令 "keytool -list -keystore [path to debug keystore]" 可能会显示 SHA-256 密钥。
要获取 SHA1 密钥,您可以按照以下步骤操作:
- 打开您的项目
- 点击“Gradle”(右侧)
- 选择你的模块
- 任务 -> android ->(双击)signingReport
image: get your SHA1 key
我的情况是我使用了错误的 SHA1,因为 google 为我创建了一个。我 google 控制台,当你打开一个 app/game 转到
-> Setup
-> App Integrity
在这里您可以看到“应用签名密钥证书”和“上传密钥证书”。
当我从“App signing key certificate”添加 SHA1 时,sing in 开始工作。
我对 Google API 和 GoogleApiClient
class 还是有点陌生,所以我关注了 this tutorial 希望能够充分设置以显示排行榜。
目前我已经在我的游戏中实现了这段代码activity。
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();
}
}
}
事实上,这确实会弹出一个小意图,上面写着 "Connecting to Google Play",然后选择一个帐户。符合预期。
但是,每次调用 onConnectionFailed
时,错误代码似乎是 4。
根据 ConnectionResult
,4 表示 需要登录。
什么给了?即使在多个帐户上尝试 "sign in" 之后,我仍然会收到相同的错误代码。我是否需要以某种方式将登录结果传递给我的 GoogleApiClient
?
干杯!
听起来您的游戏可能没有在 Play 游戏机中正确设置。要检查的一些事项:
您的应用程序中的 appId 与控制台中的应用程序 ID 匹配。
有一个链接到您的游戏的 Android 应用程序。
- 链接的应用程序已将包配置为与您的 AndroidManifest.xml 中的包相匹配
- 链接的应用程序已获得授权,并且具有与您用于签署应用程序的密钥库相匹配的 SHA1 指纹。
- 确保您用于登录的用户 ID 在您游戏的测试人员列表中。
- 如果您正在使用 SavedGamesAPI,请确保它已在控制台上启用。
已修复。
获得无数后SIGN_IN_REQUIRED
我分配了很多RESULT_APP_MISCONFIGURED
。
解决办法?添加 ProGuard 异常 非常重要,如 here.
所述如果它在本地构建中连接并正常工作,但您从 Play 商店下载的版本不工作(它给出登录错误),这就是您修复它的方法。当您上传 APK 时,您使用 SHA1 作为上传版本。 Google 在您上传您的 APK 后给您一个不同的 SHA1。 您需要将这个新的 SHA1 输入到您的凭据中。
按照以下步骤操作:
- 转到Google开发者控制台
- 单击所有应用程序 > 您的应用程序
- 转到发布管理 > 应用签名
- 注意有一个 "Upload Certificate" 和一个 "App Signing Certificate"。
- 从应用程序签名证书中复制 SHA1。 (在所有这些密钥库死板的代码之后,他们没有在文档中提及这部分!)
- 在游戏服务中创建一个新的连接应用,然后 将应用程序签名证书中的 SHA1 粘贴到此处,并确保您的程序包名称正确无误。
现在一切正常!我不明白为什么没有清楚地记录下来。
即使距离提出最初的问题已经四年了,我还是想加上我的 2c 价值,因为我遇到了同样的问题,none 上述建议为我解决了这个问题。
对我来说解决这个问题的是意识到当你的应用程序发布到 Google Play 商店时你需要一个 SHA1 指纹,而当你调试时需要一个不同的指纹。第一个是在 Google Play 控制台中设置应用时自动创建的,并且是唯一的,但在您发布应用之前不会使用。您必须自己创建调试器,并且对于您正在调试的所有应用程序都是一样的。凭据的详细信息存储在您的 Google API 控制台中。
总而言之,您拥有的每个使用 Google Play 服务的应用都应该在 Google API 控制台中有两个 OAuth 客户端 ID,一个用于调试,一个用于发布版本.如何做到这一点在文档 here.
中有充分的解释确保使用 SHA1 密钥。
命令 "keytool -list -keystore [path to debug keystore]" 可能会显示 SHA-256 密钥。
要获取 SHA1 密钥,您可以按照以下步骤操作:
- 打开您的项目
- 点击“Gradle”(右侧)
- 选择你的模块
- 任务 -> android ->(双击)signingReport
image: get your SHA1 key
我的情况是我使用了错误的 SHA1,因为 google 为我创建了一个。我 google 控制台,当你打开一个 app/game 转到
-> Setup
-> App Integrity
在这里您可以看到“应用签名密钥证书”和“上传密钥证书”。 当我从“App signing key certificate”添加 SHA1 时,sing in 开始工作。