java - 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 设置正确
有什么问题?
解决方案
您在登录用户时请求了哪些范围?您必须像这样使用 DEFAULT_GAMES_SIGN_IN
GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_GAMES_SIGN_IN).build();
推荐阅读
- python - 我将如何计算这个 python 程序的运行时间、内存和 CPU 使用率?
- debugging - 模拟器中的 Apple Id 登录授权
- c - linux中的参数到argv
- firebase - 错误状态:DocumentSnapshotPlatform 中不存在字段
- python - 如何通过虚拟相机将 OpenCV 视频源发送到 Python?
- azure-functions - Azure Functions 有哪些选项可以使用额外的硬盘驱动器?
- reactjs - 如何在同一行设置段落、按钮和文本框?
- database - 如何在 Docker 中将 mg_client 连接到容器外?
- amazon-web-services - 如何在 AWS Educate 中检查正在运行的资源
- shell - bash:通过grep匹配单引号和双引号