无法登录Google Play游戏服务:必须拥有游戏ID才能登录。

3
我正在尝试集成Google Play游戏服务,但无法登录。我知道一些开发者之前问过这个问题,但问题是没有人问我遇到的错误。
日志如下:
Must have a game ID to sign in! Status{statusCode=unknown status code: 12501, resolution=null} Invalid (empty) game ID found in the EXTRA_GAME_ID extra.
我只是按照官方文档上的教程进行操作。 可能导致该错误的原因是什么?似乎没有人问过这个错误,这很奇怪。每个人都有一些状态码,但我的只是未知。是否有人遇到过这个错误?
代码
清单
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="...">

<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:supportsRtl="true"
    android:roundIcon="@mipmap/ic_launcher"
    android:theme="@style/AppTheme">

    <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"/>
    ...

Activity

private void startSignInIntent() {
    GoogleSignInClient signInClient = GoogleSignIn.getClient(this,
            GoogleSignInOptions.DEFAULT_GAMES_SIGN_IN);
    Intent intent = signInClient.getSignInIntent();
    startActivityForResult(intent, RC_SIGN_IN);
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (requestCode == RC_SIGN_IN) {
        GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data);
        if (result.isSuccess()) {
            // The signed in account is stored in the result.
            GoogleSignInAccount signedInAccount = result.getSignInAccount();
        } else {
            String message = result.getStatus().getStatusMessage();
            if (message == null || message.isEmpty()) {
                Log.e("e", result.getStatus());
                message = "Something wrong happened. Please try again.";
            }
            new AlertDialog.Builder(this, R.style.CustomAlertDialogTheme).setMessage(message)
                    .setNeutralButton(android.R.string.ok, null).show();
        }
    }
}

res/values/ids.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <item name="app_id" type="string">digits here...</item>
</resources>

我确定我已经将我的应用链接到Play游戏服务。我在Play控制台上将自己添加为测试人员(包括游戏服务部分和发布管理部分)。我尝试了实际设备和模拟器两种方式。我没有在API控制台上手动创建OAuth2客户端ID,而是从Play控制台创建的。SHA-1是正确的(如果不正确,我应该会收到其他错误消息)。从未起作用。


那么我们应该如何知道你写了什么?能分享一下吗?特别是登录部分? - Masoom Badi
@Sam。对不起,我已经更新了。请看一下,但实际上我用代码和过程发布了这个问题三次,但是没有人回答。我认为我在其他基本部分上犯了错误。 - Ooto
有时候 build.gradle 的 applicationId 与已注册的 id 不匹配。请仔细检查您的控制台和 Android Studio。即使是非常小的差异也可能导致问题。确保控制台和应用程序中的所有详细信息都匹配。或者尝试从控制台中删除它并重新开始。以防万一。 - Masoom Badi
我也遇到了同样的问题,你找到解决方案了吗? - kubaork
@kubaork 不好意思,我目前放弃实现Google Play Games了。 - Ooto
显示剩余2条评论
1个回答

1
我遇到了一个同样输出的问题 - 我将 com.google.android.gms:play-services-(base/games/auth) 版本降级至 16.0.0,并获得了更好的错误日志:
019-10-24 11:52:03.266 25880-12410/? E/ValidateServiceOp: ****
**** APP ID IS NOT CORRECTLY CONFIGURED TO USE GOOGLE PLAY GAME SERVICES
**** Specify it using @string resources value or \u003 followed by an app_id value.
**** For example:
****   meta-data android:name="com.google.android.gms.games.APP_ID"
****             android:value="@string/app_id" />
**** or
****   meta-data android:name="com.google.android.gms.games.APP_ID"
****             android:value="\u003123456789" />

我的清单文件是这样的:

android:name="com.google.android.gms.games.APP_ID"
****             android:value="3123456789" />

我缺少 \u003 符号。将其替换为 @string/app_id 并将值放入 strings.xml 后,它开始工作了。您将此字符串添加到 ids.xml 中,这可能是错误的。
完成后,我升级了 Google Play 服务的版本,一切都正常工作了!

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接