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

Posted

技术标签:

【中文标题】无法登录 Google Play 游戏服务:必须有游戏 ID 才能登录【英文标题】:Can't sign in Goolge Play Game Services: Must have a game ID to sign in 【发布时间】:2019-12-23 09:53:51 【问题描述】:

我正在尝试集成 Google Play 游戏服务但无法登录。我知道一些开发者之前询问过这个问题,但问题是没有人询问我遇到的错误。

日志是这样的。

必须有游戏ID才能登录!

StatusstatusCode=未知状态码:12501,分辨率=null

在 EXTRA_GAME_ID extra 中发现无效(空)游戏 ID。

我只是按照官方文档上的教程进行操作。 这个错误的原因可能是什么?似乎没有人问过这个错误,这很奇怪。每个人都有一些状态码,但我的只是unknown 有人遇到过这个错误吗?

代码

Manifest

<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 Console 上的测试人员(游戏服务部分以及发布管理)。我尝试使用实际设备和模拟器。我没有在 API 控制台上手动创建 OAuth2 客户端 ID。我是从 Play Console 创建的。 SHA-1 是正确的(如果这是不正确的,我应该得到其他错误消息。)从来没有工作过。

【问题讨论】:

那么我们怎么知道你写了什么?关心分享?特别是那个标志? @Sam。抱歉我现在更新了。请看一下,但我实际上用代码和流程将这个问题发布了三遍,但没有人回答。我认为我在其他基本部分犯了错误。 您的代码对我来说看起来不错..您在应用程序 ID 中只包含了 12 位数字,对吗? @Sam。是的,只有数字部分。我只是在寻找遇到此错误的人,因为没有人可以回答.. build.gralde 的 applicationId 有时与注册的 id 不匹配。请仔细检查您的控制台和您的 android studio。一个非常小的差异可能会导致问题。确保控制台和应用程序中的所有详细信息都匹配..或者尝试从控制台中删除它并重新开始..以防万一。 【参考方案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 服务版本,一切正常!

【讨论】:

以上是关于无法登录 Google Play 游戏服务:必须有游戏 ID 才能登录的主要内容,如果未能解决你的问题,请参考以下文章

Google Play 游戏服务 - 无法登录

无法登录 google play 游戏服务 API

为啥无法登录 Google Play 服务?

删除 google play 游戏数据后卡住无法登录

Google Play 游戏服务登录失败

Google Play 游戏服务错误:无法登录 - 应用程序没有注册的客户端 ID?其他修复无效