Google Play 游戏服务登录失败
Google Play Game Service failing to sign in
这几天我一直在用头撞墙。尽管阅读了许多描述 problems/solutions GPS 登录失败的帖子,但我一直无法找到解决问题的方法。
简而言之,我正在使用 LibGDX 框架在 Android Studio 中开发游戏,并将 BaseGameUtils 添加为库并添加了所有必要的依赖项等。
问题陈述: 游戏开始时,它尝试连接到 GPGS,但总是以 'Failed to log in' 消息响应。 logcat 包含以下消息:
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
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
我的网络没有 'flaky',而且我不认为我的帐户已被禁用 - 我安装的其他商业游戏在 GPGS 上运行得很好。
我已经签署了我的 APK - 调试和发布(虽然我在这个阶段只使用调试)。我已将游戏添加到 Google 开发人员控制台并将其链接到 API 管理器并创建了 OAuth2 客户端 ID。事实上,我已经这样做了很多次,删除链接的游戏并重新创建它,认为我的客户端 ID 或 SHA1 指纹不正确。 logcat 消息表明 OAuth2 配置错误,但我已经检查了很多次,对我来说一切正常。验证签名的最佳方法是什么?
我正在直接从我的笔记本电脑部署到物理三星 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 class,但最近发现它已被弃用,因此我更改了代码以使用 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 客户端代码,这没有任何区别。
我不确定这里还能提供什么,但如果您需要查看代码的任何其他部分,请告诉我。我将非常感谢任何关于在代码或日志中检查的建议,以便更好地了解失败的原因。
非常感谢。
我认为您应该仔细阅读(或重新阅读)描述的所有过程 here。
如果您在重新从头开始学习本教程后需要更多帮助,请添加评论。
90% 的问题与此相关:错误的 sha1 签名证书、错误的应用程序包名称、缺少客户端 ID 以及类似的问题...
PS: here 你可以找到所有的工作样本
包名称出现在项目的多个位置,并且必须与在 Google Play 开发者控制台中注册的包名称相匹配。例如。 -
android build.gradle
defaultConfig {
applicationId "com.package.name"
...
}
android AndroidManifest.xml:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.package.name"
...
</manifest>
我在 android build.gradle 中的 applicationId 中有错字。更正此问题后,Google Play 服务已成功登录。
这几天我一直在用头撞墙。尽管阅读了许多描述 problems/solutions GPS 登录失败的帖子,但我一直无法找到解决问题的方法。
简而言之,我正在使用 LibGDX 框架在 Android Studio 中开发游戏,并将 BaseGameUtils 添加为库并添加了所有必要的依赖项等。
问题陈述: 游戏开始时,它尝试连接到 GPGS,但总是以 'Failed to log in' 消息响应。 logcat 包含以下消息:
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
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
我的网络没有 'flaky',而且我不认为我的帐户已被禁用 - 我安装的其他商业游戏在 GPGS 上运行得很好。
我已经签署了我的 APK - 调试和发布(虽然我在这个阶段只使用调试)。我已将游戏添加到 Google 开发人员控制台并将其链接到 API 管理器并创建了 OAuth2 客户端 ID。事实上,我已经这样做了很多次,删除链接的游戏并重新创建它,认为我的客户端 ID 或 SHA1 指纹不正确。 logcat 消息表明 OAuth2 配置错误,但我已经检查了很多次,对我来说一切正常。验证签名的最佳方法是什么?
我正在直接从我的笔记本电脑部署到物理三星 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 class,但最近发现它已被弃用,因此我更改了代码以使用 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 客户端代码,这没有任何区别。
我不确定这里还能提供什么,但如果您需要查看代码的任何其他部分,请告诉我。我将非常感谢任何关于在代码或日志中检查的建议,以便更好地了解失败的原因。
非常感谢。
我认为您应该仔细阅读(或重新阅读)描述的所有过程 here。 如果您在重新从头开始学习本教程后需要更多帮助,请添加评论。
90% 的问题与此相关:错误的 sha1 签名证书、错误的应用程序包名称、缺少客户端 ID 以及类似的问题...
PS: here 你可以找到所有的工作样本
包名称出现在项目的多个位置,并且必须与在 Google Play 开发者控制台中注册的包名称相匹配。例如。 -
android build.gradle
defaultConfig {
applicationId "com.package.name"
...
}
android AndroidManifest.xml:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.package.name"
...
</manifest>
我在 android build.gradle 中的 applicationId 中有错字。更正此问题后,Google Play 服务已成功登录。