【发布时间】:2017-08-25 14:57:12
【问题描述】:
我有一个使用 Play 游戏服务的 Android 游戏。 Play 游戏服务似乎与特定的 Google 登录相关联。如果玩家开始游戏,它会自动登录到 Play 游戏。
现在我也希望将 Firebase 整合到我的游戏中,例如方便聊天。
如何将 Play 游戏 user account 到 create/login 用于 Firebase 帐户?
Play Games 是否有某种令牌给我,我可以直接传递给 Firebase?
我试图避免使用我自己的后端服务器,并避免让用户在我的游戏中登录两次,因为那是相当糟糕的用户体验。
我有哪些选择?我很困惑如何处理这个问题。
-- 已解决--
首先,我需要从 Firebase 身份验证选项卡启用 Google 登录。 然后我在我的基础活动中使用了这段代码:
private FirebaseAuth mAuth;
GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_GAMES_SIGN_IN)
.requestIdToken("<appidfromfirebase>.apps.googleusercontent.com")
.build();
mGoogleApiClient = new GoogleApiClient.Builder(this)
.enableAutoManage(this, this)
.addConnectionCallbacks(this)
.addApi(Games.API)
.addScope(Games.SCOPE_GAMES)
.addApi(Auth.GOOGLE_SIGN_IN_API, gso)
.build();
@Override
public void onConnected(Bundle connectionHint) {
if (mGoogleApiClient.hasConnectedApi(Games.API)) {
Auth.GoogleSignInApi.silentSignIn(mGoogleApiClient).setResultCallback(
new ResultCallback<GoogleSignInResult>() {
@Override
public void onResult(GoogleSignInResult googleSignInResult) {
GoogleSignInAccount acct = googleSignInResult.getSignInAccount();
if (acct == null) {
Logger.e("account was null: " + googleSignInResult.getStatus().getStatusMessage());
return;
}
AuthCredential credential = GoogleAuthProvider.getCredential(acct.getIdToken(),null);
mAuth.signInWithCredential(credential)
.addOnCompleteListener(
new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
// check task.isSuccessful()
}
});
}
}
);
}
}
【问题讨论】:
标签: android firebase firebase-authentication google-play-games