You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Firebase Facebook登录后显示含displayName的Toast消息?

解决Facebook登录后获取Firebase用户displayName并显示Toast的问题

没问题,你已经离成功只差一步啦!当登录成功后,FirebaseUser user = mAuth.getCurrentUser(); 这句代码已经帮你拿到了当前登录用户的对象,里面就包含了你需要的displayName。只需要把它拼接到Toast的消息里,同时记得做个非空判断,避免用户没有设置昵称时出现空指针异常。

修改后的handleFacebookAccessToken方法代码如下:

private void handleFacebookAccessToken(AccessToken token) {
    Log.d(TAG, "handleFacebookAccessToken:" + token);
    progressBar.setVisibility(View.VISIBLE);

    AuthCredential credential = FacebookAuthProvider.getCredential(token.getToken());
    mAuth.signInWithCredential(credential)
            .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
                @Override
                public void onComplete(@NonNull Task<AuthResult> task) {
                    if (task.isSuccessful()) {
                        // Sign in success, update UI with the signed-in user's information
                        Log.d(TAG, "signInWithCredential:success");
                        FirebaseUser user = mAuth.getCurrentUser();
                        updateUI(user);

                        // 获取用户名并显示Toast
                        String welcomeMessage;
                        if (user != null && user.getDisplayName() != null) {
                            welcomeMessage = "欢迎回来," + user.getDisplayName();
                        } else {
                            // 当用户名为空时的默认消息
                            welcomeMessage = "欢迎回来!";
                        }
                        Toast.makeText(SignInActivity.this, welcomeMessage, Toast.LENGTH_SHORT).show();
                    } else {
                        // If sign in fails, display a message to the user.
                        Log.w(TAG, "signInWithCredential:failure", task.getException());
                        Toast.makeText(SignInActivity.this, "Error.", Toast.LENGTH_LONG).show();
                        updateUI(null);
                    }
                    progressBar.setVisibility(View.INVISIBLE);
                }
            });
}

关键修改点说明:

  • 从FirebaseUser对象中通过user.getDisplayName()直接获取用户的Facebook昵称
  • 增加了双重非空判断:先确保user对象不为空(虽然登录成功后大概率不会为空,但严谨性很重要),再判断displayName是否存在
  • 根据判断结果生成对应消息,避免空指针异常,同时保证用户体验的连贯性

这样修改后,登录成功时就能根据用户的Facebook昵称显示个性化的欢迎Toast啦!

内容的提问来源于stack exchange,提问作者Kaiser

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 08:09:53