Google 玩游戏服务错误代码 400

Google play game service error code 400

有一个应用程序使用玩游戏服务,但由于某种原因它停止工作了。 看起来有时我可以成功登录,但通常 - 不能。如果我检查了 API 流量,大约有 10% 的响应代码 = 200,而其他响应代码为 404。

获得 404 的方法:

当我试图检查日志中的错误时,我看到:

11705-13707/com.google.android.gms W/GamesServiceBroker: Client connected with SDK 12171000, Services 11975436, and Games 54390036
11705-9262/com.google.android.gms E/BoundService: No such BoundService for action: com.google.android.gms.auth.APP_CERT
11705-9262/com.google.android.gms E/BoundService: No such BoundService for action: com.google.android.gms.auth.APP_CERT
691-778/system_process E/PROXIMITY: ProximitySensor: unknown event (type=3, code=0)
8876-8890/com.agminstruments.drumpadmachine V/FA: Inactivity, disconnecting from the service
691-778/system_process E/PROXIMITY: ProximitySensor: unknown event (type=3, code=0)
2254-2269/? I/PerfService: PerfServiceNative_getPackName
11705-16860/com.google.android.gms E/Volley: [3966] BasicNetwork.performRequest: Unexpected response code 400 for https://www.googleapis.com/games/v1/players/me?language=ru-RU
11705-9262/com.google.android.gms E/PlayerAgent: Unable to load player g08394879143000804289
11705-9262/com.google.android.gms W/PlayerAgent: {"errors":[{"domain":"global","reason":"invalid","message":"Invalid applicationId with value . Reason: No application ids specified."}],"code":400}
3978-3978/com.google.android.play.games.ui I/SignInActivity: Transition from 8 to 11
3978-3978/com.google.android.play.games.ui W/SignInActivity: onSignInFailed()...
3978-3978/com.google.android.play.games.ui W/SignInActivity: Sign in failed during 8
3978-3978/com.google.android.play.games.ui W/SignInActivity: ==> Returning non-OK result: 10002

我不明白为什么消息中没有 ID "Invalid applicationId with value ." 因为我已经在应用程序中添加了 ID。我也尝试更改 ID,在这种情况下,我收到一个错误,指出 ID XXXXXXXXXXXX 未与应用链接 my.package.name.

我还仔细检查了 Application IDSHA 指纹,重新导入 google-services.json 还尝试从链接的应用程序手动添加 OAuth2 Client ID。检查播放服务说明,一切正常。 我还能检查什么?

更新:

尝试将播放服务更新到 11.8.0 并使用 GoogleSignInClient

 mGoogleSignInClient = GoogleSignIn.getClient(application, GoogleSignInOptions.DEFAULT_GAMES_SIGN_IN);
 activity.startActivityForResult(mGoogleSignInClient.getSignInIntent(), 312);

但也出现错误:

com.google.android.gms.common.api.ApiException: 4: 

我的设备上也有 "com.google.android.gms.common.api.ApiException: 4"。 更新 Google Play 游戏应用为我解决了这个问题。

然后我只需要在我的应用程序中手动单击 Google 登录按钮。 希望对您有所帮助!

使用 gms_library_version '11.8.0' 以及我正在使用的代码:

 @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    //...
    mGoogleSignInClient = GoogleSignIn.getClient(this, new GoogleSignInOptions
            .Builder(GoogleSignInOptions.DEFAULT_GAMES_SIGN_IN).build());
    //...
 }



// when the button gets clicked
public void startSignInIntent() {
    startActivityForResult(mGoogleSignInClient.getSignInIntent(), RC_SIGN_IN);
}


    @Override
public void onActivityResult(int requestCode, int resultCode, Intent intent) {

    if (requestCode == RC_SIGN_IN) {

        Task<GoogleSignInAccount> task =
                GoogleSignIn.getSignedInAccountFromIntent(intent);

        try {
            GoogleSignInAccount account = task.getResult(ApiException.class);
            onConnected(account);
        } catch (ApiException apiException) {
            String message = apiException.getMessage();
            if (message == null || message.isEmpty()) {
                message = getString(R.string.signin_other_error);
            }

            onDisconnected();

            new AlertDialog.Builder(this)
                    .setMessage(message)
                    .setNeutralButton(android.R.string.ok, null)
                    .show();
        }
    }

    //...
  }

清除缓存和数据也是解决该错误的主要方法之一。

1.Go 到设置 >> 转到应用程序设置(在某些设备中,应用程序设置被命名为应用程序)。 2.Go 至,所有应用程序 > >找到 Google Play 商店 >> 清除数据和缓存 3.Once 您已清除所有内容,接下来您需要强制停止该应用程序。 此外,查找 Google 服务框架 >> 打开 Google 服务框架 >> 清除缓存和数据 现在,重新启动您的设备并尝试下载该应用程序。

试试这个, 首先从调试播放服务开始,

  • 在代码中启用调试播放服务 > 制作 apk > 在设备上安装 > 从 android sdk 中的 "tools" 文件夹打开 "Monitor" > 将设备连接到 PC > 运行

  • 调试后,如果您收到此消息

"You have wrong OAUth2 related configurations, please check. Detailed error; UNREGISTERED_ON_API_CONSOLE" "OnSignInFailed()..."

  • 转到

只是 copy/paste "App signing certificate" "SHA-1 certificate fingerprint" - 而不是 "Upload certificate" "SHA-1 certificate fingerprint" 这是来自你的密钥库的那个,在 API ID 客户端 OAuth 2.0 .

这会完成你的工作!!

截至目前,google玩游戏已无法在本地连接。但是当它被导入 google 游戏商店时它连接成功(Google 应用程序签名完全按照它应该做的:它将您的 SHA1 从 "upload certificate" 更改为 "App signing"一个)。

注: 上图取自 GitHub 未决问题之一。 希望这对您有所帮助!!

如所述here.错误代码 4 表示

public static final int SIGN_IN_REQUIRED

The client attempted to connect to the service but the user is not signed in. The client may choose to continue without using the API. Alternately, if hasResolution() returns true the client may call startResolutionForResult(Activity, int) to prompt the user to sign in. After the sign in activity returns with RESULT_OK further attempts should succeed.

Constant Value: 4

因此请确保 google 开发者控制台中您应用的 SHA-1 signing-certificate 指纹属于用于签署您正在测试的 APK 的同一密钥。

组装调试版本时 Android Studio 使用自己的调试密钥。您可以从

更改它

right-clicking 在项目目录中的 app 文件夹上 -> selecting "Open Module Settings"-> "Signing" 选项卡 -> 配置你在 google 开发控制台。之后导航到 "Build Types" 选项卡和 select 您的签名配置。

结帐