【发布时间】:2019-10-30 06:44:25
【问题描述】:
我正在为安卓创建游戏。每个用户都需要经过身份验证。
目前,当新用户启动游戏时,它会从我的服务器请求一个识别码,并将其存储到 SharedPreferences。下次用户启动游戏时,它会使用此存储的识别码进行身份验证。问题是,当用户清除这个应用的数据时,他无法找回他的ID,所以他永远失去了他的进步。
有没有办法使用 Firebase Play 游戏身份验证方法生成唯一且对于一个玩家始终相同的识别码?
GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_GAMES_SIGN_IN)
.requestServerAuthCode("MyCID")
.build();
mAuth = FirebaseAuth.getInstance();
super.onCreate(savedInstanceState);
final FirebaseAuth auth = FirebaseAuth.getInstance();
AuthCredential credential = PlayGamesAuthProvider.getCredential("MyCID");
auth.signInWithCredential(credential)
.addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
public void onComplete(@NonNull Task<AuthResult> task) {
if (task.isSuccessful()) {
currentUser = auth.getCurrentUser();
} else {
Toast.makeText(MainActivity.this, "Authentication failed.",
Toast.LENGTH_SHORT).show();
}
}
});
if (currentUser == null) {
cu = "NO UID";
} else {
cu = currentUser.getUid();
}
我尝试了这段代码(MyCID 在哪里:我使用了下图中的 CID),但没有显示 Google Play 游戏弹出窗口,我得到 Authentication Failed toast 并且 cu 设置为“NO UID”。
有人可以解释一下这是如何工作的吗?
编辑
感谢@crysxd,我的应用现在显示绿色的 google play 游戏弹出窗口。但是,正如我在其他使用谷歌游戏登录的游戏中看到的那样,我收到了一个错误,提示“com.google.android.gms.common.api.ApiException: 4:”,而不是预期的“选择一个帐户”弹出窗口。
我需要运行一个函数来显示这个对话框吗?是我遗漏了什么,还是我在 Google Play 控制台中错误地配置了游戏?
我当前的代码:link
【问题讨论】:
标签: java android firebase firebase-authentication google-play-games