Google Play游戏服务无法登录

时间:2017-01-03 23:25:04

标签: java android libgdx google-play-services google-play-games

我现在已经将头撞在墙上了好几天了。尽管阅读了许多描述GPS登录失败的问题/解决方案的帖子,但我一直无法找到解决问题的方法。

简而言之,我正在使用LibGDX框架在Android Studio中开发游戏,并将BaseGameUtils添加为库并添加了所有必需的依赖项等。

问题陈述:当游戏开始时,它会尝试连接到GPGS但始终以“登录失败”消息进行响应。 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

根据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。我的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客户端代码,但这没有任何区别。

我不确定此处还提供了什么,但如果您需要查看代码的其他任何部分,请告诉我。我非常感谢在代码或日志中检查的任何建议,以便更好地了解为什么会失败。

非常感谢提前。

2 个答案:

答案 0 :(得分:2)

包名称出现在项目的许多位置,并且必须与在Google Play Developer Console中注册的包名称相匹配。例如。 -

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服务会成功登录。

答案 1 :(得分:1)

我认为你应该仔细阅读(或重新阅读)所有描述的程序here。 如果您再次从头开始学习本教程后需要更多帮助,请添加注释。

90%的问题与以下问题有关:错误的sha1签名证书,错误的应用程序包名称,缺少客户端ID等等......

PS:here你可以找到所有工作样本