如何将Firebase帐户与Google Play游戏帐户相关联

时间:2017-03-31 10:55:21

标签: android firebase firebase-authentication google-play-games

我有一款使用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()
                                                }
                                            });
                        }
                    }
            );
        }
    }

2 个答案:

答案 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游戏事件。