我有一款使用Play游戏服务的Android游戏。 Play游戏服务似乎与特定的Google登录相关联。如果玩家开始游戏,则会自动登录Play Play。
现在我希望将Firebase整合到我的游戏中,例如为了方便聊天。
如何将游戏user account
用于create/login
到Firebase帐户?
是否存在某种令牌游戏游戏让我可以直接进入Firebase?
我试图避免使用我自己的后端服务器,并避免让用户在我的游戏中登录两次,因为这是一个相当差的用户体验。
我有什么选择?我很担心如何处理这个问题。
- 已解决 -
首先,我需要从Firebase身份验证标签启用Google Signin。 然后我在我的基本活动中使用了这段代码:
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()
}
});
}
}
);
}
}
答案 0 :(得分:2)
您需要使用id标记让用户将Google身份与Firebase Authentication相关联。
使用游戏配置构建Google API客户端,请求ID令牌。
GoogleSignInOptions options = new GoogleSignInOptions
.Builder(GoogleSignInOptions.DEFAULT_GAMES_SIGN_IN)
.requestIdToken(firebaseClientId)
.build();
mGoogleApiClient = new GoogleApiClient.Builder(this)
.addApi(Games.API)
.addApi(Auth.GOOGLE_SIGN_IN_API, options)
.addConnectionCallbacks(this)
.addOnConnectionFailedListener(this)
.build();
然后启动SignIn Intent:
Intent signInIntent = Auth.GoogleSignInApi.getSignInIntent(mGoogleApiClient);
startActivityForResult(signInIntent, RC_SIGN_IN);
返回结果后,获取id令牌并将其传递给Firebase.Auth:
@Override
protected void onActivityResult(int requestCode, int responseCode,
Intent intent) {
if (requestCode == RC_SIGN_IN) {
GoogleSignInResult result =
Auth.GoogleSignInApi.getSignInResultFromIntent(intent);
if (result.isSuccess()) {
AuthCredential credential = GoogleAuthProvider.getCredential(
acct.getIdToken(), null);
FirebaseAuth.getInstance().signInWithCredential(credential)
.addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
Log.d(TAG, "signInWithCredential:onComplete:" + task.isSuccessful());
}
});
}
}
}
答案 1 :(得分:0)
您在Android设备中登录的Google帐户通常是linked with your GPGS profile。
现在回答您的问题,请按照Integrate With Your Play Games Services Project指南了解如何将Firebase与GPGS一起使用。
在Play中将Firebase添加到Play游戏服务项目时 开发者控制台,你可以:
访问Firebase Analytics,这是一款免费的应用测量解决方案 提供有关应用使用和用户参与的见解。查看您的游戏 通过将Play游戏事件记录到Firebase Analytics中的事件 火力。
当您将Firebase添加到Play游戏服务项目时,您也是 linking your Google Play Account to your Firebase project
将Firebase添加到您的Play游戏服务项目
在Play Developer Console中:
点击应用的游戏详情页面上的添加Firebase查看 政策确认,然后点击立即确认Firebase已添加到您的 Play Games Project和您的Google Play帐户已与您的帐户相关联 Firebase项目。接下来,您需要将Firebase SDK添加到您的 应用程序的代码。
将Firebase SDK添加到您的 pp
要开始使用,请将Firebase Analytics添加到您的应用中。
将Firebase Analytics SDK添加到您的应用后,即可 开始记录Play游戏事件。