问题描述
我认为您应该仔细阅读(或重新阅读)这里描述的所有过程。再次从头开始阅读本教程后,如果您需要更多帮助,请添加评论。
90%的问题与以下原因有关:SHA1签名证书错误,应用程序包名称错误,客户端ID丢失以及类似的问题…
PS:在这里您可以找到所有工作示例
解决方法
几天来,我一直在用头撞墙。尽管阅读了许多描述GPS登录失败的众多问题/解决方案的文章,但我仍无法找到解决问题的方法。
简而言之,我正在使用LibGDX框架在Android Studio中开发游戏,并添加了BaseGameUtils作为库并添加了所有必需的依赖项等。
问题陈述: 游戏开始时,它尝试连接到GPGS,但始终以“无法登录”消息作为响应。日志猫包含以下消息:
01-03 19:37:41.744 6693-7436/? E/TokenRequestor: You have wrong OAuth2 related configurations,please check. Detailed error: UNREGISTERED_ON_API_CONSOLE
01-03 19:37:41.764 20609-20609/? I/SignInActivity: Transition from 6 to 11
01-03 19:37:41.764 20609-20609/? W/SignInActivity: onSignInFailed()...
01-03 19:37:41.764 20609-20609/? W/SignInActivity: Sign in failed during 6
01-03 19:37:41.764 20609-20609/? W/SignInActivity: ==> Returning non-OK result: 10002
根据https://developers.google.com/android/reference/com/google/android/gms/games/GamesActivityResultCodes
…
public static final int RESULT_SIGN_IN_FAILED
Result code sent back to the calling Activity when signing in fails.
The attempt to sign in to the Games service failed.
For example,this might happen if the network is flaky,or the user's account has been disabled,or consent could not be obtained.
Constant Value: 10002
我的网络不是“不稳定”的,我不认为自己的帐户已被禁用-我安装的其他商业游戏在GPGS上运行正常。
我已经对我的APK进行了签名-调试和发布(尽管我目前仅在调试阶段使用)。我已将游戏添加到Google Developer Console中,并在API
Manager中将其链接,并创建了OAuth2客户端ID。实际上,我已经做了很多次,删除链接的游戏并以我的客户ID或SHA1指纹不正确的方式重新创建它。logcat消息表明OAuth2配置错误,但是我已经检查了很多次,对我来说一切都很好。验证签名的最佳方法是什么?
我正在对物理三星S7进行测试,该三星S7可直接从笔记本电脑部署到。我的Android
Gradle声明了必要的SigningConfigs,因此我认为应该正确签署我部署的游戏。
android {
signingConfigs {
config {
keyAlias 'mygame-key'
keyPassword 'mypassword'
storeFile file('path/to/my/keystore.jks')
storePassword 'keystorepassword'
}
}
buildTypes {
release {
signingConfig signingConfigs.config
}
debug {
signingConfig signingConfigs.config
debuggable true
}
}
在清单中,我有必要的行。例如-
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<meta-data android:name="com.google.android.gms.games.APP_ID" android:value="@string/app_id"/>
<meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version"/>
最初,在AndroidLauncher中,我使用的是GameHelper类,但是最近发现它已被弃用,因此我将代码更改为使用GoogleApiClient。构建器的定义如下:
mGoogleApiClient = new GoogleApiClient.Builder(this)
.addConnectionCallbacks(this)
.addOnConnectionFailedListener(this)
.addApi(Games.API).addScope(Games.SCOPE_GAMES)
.build();
其他方法的代码直接取自TrivialQuest示例应用程序,例如-
@Override
protected void onStart() {
Log.d(TAG,"onStart()");
super.onStart();
mGoogleApiClient.connect();
}
但是,尽管使用了Google API客户端代码,但这没有什么区别。
我不确定这里还可以提供什么,但是如果您需要查看代码的任何其他部分,请告诉我。对于代码或日志中要检查的事情的任何建议,以获取有关失败原因的更好线索,我将非常感谢。
提前谢谢了。