【发布时间】:2017-08-20 07:00:49
【问题描述】:
我正在创建一个 Android 游戏,其中有一个 排行榜 以列表形式显示用户的分数以及他们的姓名、个人资料图片和分数项目。
后来我决定删除 Google 登录 实现的游戏,以增加进入游戏页面的用户流量。但与此同时,我想让用户通过身份验证(出于安全考虑),而不要求他们点击登录按钮(发生了如此多的用户流失)。所以我在 Firebase 身份验证部分找到了 匿名身份验证 选项。
我的问题是,当我在整个游戏中仅使用 匿名登录 进行中继时,我是否需要将 匿名用户 转换为 Google 用户 以编程方式将它们显示在 排行榜 列表中,还是 Google 会自动/内部处理?
当前工作流程
第 1 步:连接 Google Client Api(见下文编写的代码)
第 2 步:使用 Firebase 进行身份验证(Google 登录方法)
第 3 步:显示排行榜
当前实施
当我打开排行榜活动时,我有以下代码来显示排行榜(此处用户通过 Google SignIn 方法进行身份验证),
GoogleSignInOptions gso = new
GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
.requestIdToken(getString(R.string.default_web_client_id))
.build();
// [END config_signin]
mGoogleApiClient = new GoogleApiClient.Builder(this)
.addOnConnectionFailedListener(this)
.addConnectionCallbacks(this)
.addApi(Auth.GOOGLE_SIGN_IN_API, gso)
.addApi(Games.API).addScope(Games.SCOPE_GAMES)
.build();
...
...
...
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
GoogleSignInResult result =
Auth.GoogleSignInApi.getSignInResultFromIntent(data);
if (result.isSuccess()) {
// Sign In was successful, authenticate with Firebase
GoogleSignInAccount account = result.getSignInAccount();
firebaseAuthWithGoogle(account);
}
}
...
...
...
//On Button Click.......
public void submitScore(long score) {
if (isGoogleAPIConnected()) {
Games.Leaderboards.submitScore(mGoogleApiClient, getString(R.string.my_leaderboard), score);
}
}
上面编写的代码与谷歌身份验证方法配合得很好。 当我使用 匿名认证 方法时,我可以使用相同的上述代码吗?
【问题讨论】:
-
我们无法回答这个问题,除非至少看到一小段代码显示排行榜的工作原理。
-
@FrankvanPuffelen 我已经用我用谷歌登录方法完成的当前实现的代码修改了这个问题。谢谢。
标签: android firebase-authentication leaderboard