首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Google游戏Android签名获取错误代码4

Google游戏Android签名获取错误代码4
EN

Stack Overflow用户
提问于 2019-01-02 17:41:37
回答 5查看 3.9K关注 0票数 3

我目前正在开发一个Android应用程序,我想在其中使用Google游戏服务(成绩,领头板,.)。经过多次迭代,我终于得到了显示、Google、Login、的代码。现在的问题是,在用户在中签名之后,需要一段时间,然后抛出错误代码4,错误消息为空。在做了大量的研究之后,没有什么能真正帮助我解决这个问题。

我已经尝试过从Android直接启动它,手动或通过Google安装该应用程序,所有这些都是在多个设备上进行的,没有任何效果。

如果需要的话,这里有一些代码:

代码语言:javascript
复制
private static GoogleSignInClient mGoogleSignInClient;

...

@Override
protected void onCreate(Bundle savedInstanceState) {
    ...

    mGoogleSignInClient = GoogleSignIn.getClient(this, new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_GAMES_SIGN_IN).requestIdToken(getResources().getString(R.string.app_id)).build());

    signInSilently(); // Can't be tested yet.
    // isSignedIn() and loginDeclined are both false
    if(!isSignedIn() && !loginDeclined) startSignInIntent();
}

...

private void startSignInIntent() {
    startActivityForResult(mGoogleSignInClient.getSignInIntent(), RC_SIGN_IN);
    loginDeclined = true;
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent intent) {
    super.onActivityResult(requestCode, resultCode, intent);
    // resultCode = 0

    if (requestCode == RC_SIGN_IN) {
        Task<GoogleSignInAccount> task =
                GoogleSignIn.getSignedInAccountFromIntent(intent);

        try {
            GoogleSignInAccount account = task.getResult(ApiException.class);
            // Now this never happens :(
            System.out.println("SUCCESS!");
        } catch (ApiException apiException) {
            System.out.println(apiException.getStatusCode() + " + " + apiException.getMessage());
            // statusCode is 4, message is "4: "

            String message = apiException.getMessage();
            if (message == null || message.isEmpty()) {
                message = "Error signing in to Google Play Games";
            }

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

回答 5

Stack Overflow用户

发布于 2019-06-04 22:09:15

确保使用SHA1键。

命令“-list -keystore path to debug keystore”可能会显示SHA-256键。

要获得SHA1密钥,可以执行以下步骤:

  1. 打开您的项目
  2. 点击"Gradle“(右侧)
  3. 选择你的模块
  4. 任务signingReport -> (双击)

图像:获取您的SHA1密钥

票数 4
EN

Stack Overflow用户

发布于 2020-03-24 15:35:26

在网上搜索了几个小时并检查了google游戏服务文档(https://developers.google.com/games/services/android/troubleshooting)中的故障排除部分的每一步之后,我填写了"OAuth同意书“表单,它终于起作用了。

  1. 登录到Google控制台
  2. 去游戏服务
  3. 去你的游戏
  4. 在“游戏详细信息”页面上一直滚动到链接的API控制台项目。
  5. 单击指向链接API控制台项目的链接。
  6. 单击左侧栏中的"OAuth Conset屏幕“
  7. 选择外部
  8. 填写表格并上传图标
  9. 派人核查

在那之后,我的Google Play Game登录立即生效。

票数 1
EN

Stack Overflow用户

发布于 2019-01-02 21:53:14

请查阅下列有关GPG签署的详细资料:

确保您已经按照使用说明创建了客户端ID和配置游戏服务。

清单中的元数据标记应该与应用程序的数字ID匹配,并且应该只包含数字。同时还要检查你的包裹名。不要使用示例应用程序包名称。用你自己的。

您正在签署游戏的证书应该与与您的客户ID相关的证书指纹相匹配。

最后一件重要的事情是,检查是否启用了测试帐户。我老是忘了这一步。

确保应用程序签名证书中的指纹与来自游戏服务的链接应用程序匹配。您还可以通过导航到Google控制台来验证这些细节,->选择您的应用程序->凭据-> OAuth 2.0客户机ID。

我注意到的另一件事是,如果应用程序发布了,那么您需要从Play Store安装应用程序,这些凭证才能正常工作。如果应用程序尚未发布,那么请确保您使用的是调试指纹,并且与游戏服务(Debug指纹)中的匹配。

只要你有这些指纹,你就会没事的。如果您仍然有问题,我建议您通过代码实验室一步一步地获得关于如何扩展现有的统一游戏以在安卓设备上运行和集成游戏服务的帮助。unity/index.html?index=.%2F.%2 2Findex#0

或者,下面是帮助快速测试的示例应用程序-- https://github.com/playgameservices/android-basic-samples

您也可以帮助我们更好地理解这个问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54010800

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档