如何在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
相关产品推荐
相关产品推荐

