Java 谷歌游戏服务签约问题

Java 谷歌游戏服务签约问题,java,android,google-play-services,google-play-games,Java,Android,Google Play Services,Google Play Games,在过去的几天里,我一直在我的办公桌上敲打着脑袋,试图弄清楚如何为谷歌游戏服务设置登录 我可以为交互式登录启动一项活动,但窗口始终挂起并加载,没有错误: 这是我的密码。它检查用户以前是否登录过,如果有,它会尝试以静默方式登录。如果没有,则会显示交互式登录: final GoogleSignInOptions signInOption = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_GAMES_SIGN_IN)

在过去的几天里,我一直在我的办公桌上敲打着脑袋,试图弄清楚如何为谷歌游戏服务设置登录

我可以为交互式登录启动一项活动,但窗口始终挂起并加载,没有错误:

这是我的密码。它检查用户以前是否登录过,如果有,它会尝试以静默方式登录。如果没有,则会显示交互式登录:

final GoogleSignInOptions signInOption =
    new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_GAMES_SIGN_IN)
    // Add the APPFOLDER scope for Snapshot support.
    .requestScopes(Games.SCOPE_GAMES_SNAPSHOTS)
    .requestIdToken(activity.getString(R.string.debug_client_id))
    .requestEmail()
    .build();

signInClient = GoogleSignIn.getClient(this, signInOption);

GoogleSignInAccount account = GoogleSignIn.getLastSignedInAccount(this);
if (account != null) {
    // The user has signed in before

    signInClient.silentSignIn().addOnCompleteListener(new OnCompleteListener < GoogleSignInAccount > () {
        @Override
        public void onComplete(@NonNull Task < GoogleSignInAccount > task) {
            if (task.isSuccessful()) {
                // Silent signin successful
                onConnected(task.getResult());
            } else {
                // Player will need to sign-in explicitly using via UI    
                // Interactive sign-in
                activity.startActivityForResult(signInClient.getSignInIntent(), AndroidLauncher.RC_SIGN_IN);
            }
        }
    });

} else {
    //The user has never signed in
    // Interactive sign-in
    this.activity.startActivityForResult(signInClient.getSignInIntent(), AndroidLauncher.RC_SIGN_IN);
}
我所做的一切
  • 我在AndroidManifest.xml文件中添加了所需的元数据标记(具有正确的值)

  • 我已经在Google Play控制台上为应用程序、Google Play服务和Google云平台上的API在OAuth同意屏幕上添加了Google Play Games帐户作为测试人员

  • 我已检查应用程序上签名的SHA-1哈希值是否与Google Play Games上使用的OAuth凭据的SHA-1哈希值匹配,并且客户端ID是否正确,是否属于所选OAuth凭据

  • 我已经在谷歌云平台OAuth同意屏幕上启用了所有非敏感数据范围(这是我所需要的)

更多信息 如果我尝试在交互登录之前显式地调用
(…)
,则会得到API异常代码4()。当我执行交互式登录时,它就像上面一样挂起我实际上能够让登录正常工作,但前提是我使用类似这样的登录选项

final GoogleSignInOptions signInOption = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_GAMES_SIGN_IN).build();
(没有快照权限,也没有传递的客户端ID。但我需要能够访问快照)

运行交互式登录时,我在Logcat中看到的唯一可能相关的异常是:

E/ExecutionCriteria: Package unavailable for task: com.google.android.apps.tachyon/com.firebase.jobdispatcher.GooglePlayReceiver{u=0 tag="duo-analytics-summary-report" trigger=window{start=82080s,end=86401s,earliest=-97027894s,latest=-97023574s} requirements=[NET_ANY] attributes=[PERSISTED,RECURRING] scheduled=-97109975s last_run=N/A exec_window_multiplier=1.0000 jid=N/A status=PENDING retries=0 client_lib=FIREBASE_JOB_DISPATCHER-1} [CONTEXT service_id=218 ]
…但这似乎是一个良性错误


这件事我已经纠结了一段时间了;如果您有任何建议/帮助,我们将不胜感激。

您找到解决方案了吗?没有。关于Google Play保存的游戏的文档/教程很少。我似乎唯一一次能够让登录生效的是使用
新的GoogleSigningOptions.Builder(GoogleSigningOptions.DEFAULT_GAMES_SIGN_IN).build(),但这不允许我访问快照。您可以尝试将OAuth许可从测试发布到生产并尝试一次吗?我刚刚提交用于生产,但验证过程可能需要4-6周。现在尝试,应该可以了。如果可能,请尝试使用其他电子邮件帐户。请注意,您需要在Google play控制台的测试人员列表中添加电子邮件id。
E/ExecutionCriteria: Package unavailable for task: com.google.android.apps.tachyon/com.firebase.jobdispatcher.GooglePlayReceiver{u=0 tag="duo-analytics-summary-report" trigger=window{start=82080s,end=86401s,earliest=-97027894s,latest=-97023574s} requirements=[NET_ANY] attributes=[PERSISTED,RECURRING] scheduled=-97109975s last_run=N/A exec_window_multiplier=1.0000 jid=N/A status=PENDING retries=0 client_lib=FIREBASE_JOB_DISPATCHER-1} [CONTEXT service_id=218 ]