我对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
?
干杯!
听起来你的游戏可能无法在游戏控制台中正确设置。有些事要检查:
您可以在https://developers.google.com/games/services/android/quickstart#step_2_set_up_the_game_in_the_dev_console查看完成所有这些操作的说明
如果它在本地版本中连接并正常工作,但您从Play商店下载的版本不起作用(它会出现登录错误),这就是您修复它的方法。当您上传APK时,您使用SHA1作为上载版本。在您上传APK后,Google会为您提供不同的SHA1。您需要将此新SHA1输入到凭据中。
跟着这些步骤:
一切都应该工作了!我不明白为什么没有清楚地记录这一点。
虽然问了原问题已经四年了,但是我想加上我的2c值,因为我遇到了同样的问题,上述建议都没有为我解决。
为我解决的问题是,当你的应用程序已经发布到Google Play商店时,你需要为你的应用程序提供SHA1指纹,而在调试时需要另外一个指纹。第一个是在Google Play控制台中设置应用时自动创建的,并且是唯一的,但在您发布应用之前它永远不会被使用。您必须自己创建的调试,并且对于您正在调试的所有应用程序都是相同的。凭据的详细信息存储在您的Google API控制台中。
总而言之,您使用Google Play服务的每个应用都应在Google API控制台中拥有两个OAuth客户端ID,一个用于调试,另一个用于已发布版本。如何在文档here中充分解释这一点。