如何为Firebase匿名用户创建排行榜?

时间:2017-08-20 07:00:50

标签: android firebase-authentication leaderboard

我正在创建一个Android游戏,其中有排行榜,以名称,个人资料照片得分作为列表显示用户分数项目。

后来我决定删除 Google登录实施游戏,以增加用户流入游戏页面。但与此同时,我希望让用户通过身份验证(为了安全起见)而不要求他们点击登录按钮(这里发生了很多丢失)。因此,我在Firebase身份验证部分中找到了匿名身份验证选项。

我的问题是,当我在整个游戏中仅通过匿名登录进行中继时,我需要将匿名用户转换为 Google用户以编程方式在排行榜列表中显示它们或Google自动/在内部处理此问题?

当前工作流程

第1步:连接Google客户端Api(参见下面的代码)

第2步:使用Firebase进行身份验证(Google登录方法)

第3步:显示排行榜

当前实施

当我打开排行榜活动时,我有以下代码来显示leadeboard(此处用户通过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);
   }
}

以上编写的代码适用于Google身份验证方法。 当我使用匿名身份验证方法时,我可以使用相同的上述代码吗?

参考:: Authenticate Using Google Sign-In on Android

1 个答案:

答案 0 :(得分:0)

排行榜与firebase帐户无关,所以我必须确保将Google API与GAME API范围相关联。无论是否使用匿名或链接的firebase帐户,排行榜都会根据已关联的Google帐户显示。