首页 > 解决方案 > android studio 中的 Google play 服务

问题描述

我创建了简单的游戏,现在我想添加一个排行榜。我关注了谷歌文档,但每次我想获得排行榜时,我都会收到这个错误:

W/GmsClient: IGmsServiceBroker.getService failed
java.lang.IllegalStateException: Must contain at least one of the Games scopes!
    at android.os.Parcel.createException(Parcel.java:1958)
    at android.os.Parcel.readException(Parcel.java:1918)
    at android.os.Parcel.readException(Parcel.java:1868)
    at com.google.android.gms.common.internal.IGmsServiceBroker$Stub$zza.getService(com.google.android.gms:play-services-basement@@17.4.0:14)
    at com.google.android.gms.common.internal.BaseGmsClient.getRemoteService(com.google.android.gms:play-services-basement@@17.4.0:268)
    at com.google.android.gms.common.api.internal.GoogleApiManager$zac.zaa(com.google.android.gms:play-services-base@@17.4.0:22)
    at com.google.android.gms.common.api.internal.GoogleApiManager$zac.zaa(com.google.android.gms:play-services-base@@17.4.0:19)
    at com.google.android.gms.common.api.internal.zacb.zab(com.google.android.gms:play-services-base@@17.4.0:43)
    at com.google.android.gms.common.api.internal.zacb.zaa(com.google.android.gms:play-services-base@@17.4.0:49)
    at com.google.android.gms.common.api.internal.zacc.run(com.google.android.gms:play-services-base@@17.4.0:2)
    at android.os.Handler.handleCallback(Handler.java:873)
    at android.os.Handler.dispatchMessage(Handler.java:99)
    at android.os.Looper.loop(Looper.java:193)
    at android.os.HandlerThread.run(HandlerThread.java:65)

我已登录,因为有了这个我得到了我的名字

Log.d("name", String.valueOf(account.getGivenName()));

这是 getLeaderboard() 的代码:

private void showLeaderboard() {
    String s = getString(R.string.leaderboard_id);
    Games.getLeaderboardsClient(this, GoogleSignIn.getLastSignedInAccount(this))
            .getLeaderboardIntent(getString(R.string.leaderboard_id))
            .addOnSuccessListener(new OnSuccessListener<Intent>() {
                @Override
                public void onSuccess(Intent intent) {
                    startActivityForResult(intent, RC_LEADERBOARD_UI);
                }
            });
}

在 build.gradle 我有:

implementation 'com.google.android.gms:play-services-auth:19.0.0'
    implementation "com.google.android.gms:play-services-games:21.0.0"

我创建的谷歌控制台上的项目,我创建的排行榜和 OAuth2.0 SHA1 设置正确

有什么问题?

标签: javaandroidgoogle-play-services

解决方案


您在登录用户时请求了哪些范围?您必须像这样使用 DEFAULT_GAMES_SIGN_IN

GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_GAMES_SIGN_IN).build();

推荐阅读