在Facebook上使用Firebase登录后,可以通过以下步骤使用displayName显示一条吐司消息:
以下是一个使用Java编程语言实现上述功能的示例代码:
import android.os.Bundle;
import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import com.facebook.AccessToken;
import com.facebook.AccessTokenTracker;
import com.facebook.CallbackManager;
import com.facebook.FacebookCallback;
import com.facebook.FacebookException;
import com.facebook.login.LoginManager;
import com.facebook.login.LoginResult;
import com.facebook.login.widget.LoginButton;
import com.google.firebase.auth.AuthCredential;
import com.google.firebase.auth.AuthResult;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.FirebaseUser;
import com.google.firebase.auth.OAuthProvider;
public class MainActivity extends AppCompatActivity {
private FirebaseAuth mAuth;
private CallbackManager mCallbackManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 初始化Firebase身份验证
mAuth = FirebaseAuth.getInstance();
// 初始化Facebook登录按钮
LoginButton loginButton = findViewById(R.id.login_button);
mCallbackManager = CallbackManager.Factory.create();
loginButton.setPermissions("email", "public_profile");
loginButton.registerCallback(mCallbackManager, new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult loginResult) {
handleFacebookAccessToken(loginResult.getAccessToken());
}
@Override
public void onCancel() {
// 用户取消了登录
}
@Override
public void onError(FacebookException error) {
// 登录出现错误
}
});
// 监听Facebook访问令牌的更改
AccessTokenTracker accessTokenTracker = new AccessTokenTracker() {
@Override
protected void onCurrentAccessTokenChanged(AccessToken oldAccessToken, AccessToken currentAccessToken) {
if (currentAccessToken == null) {
// 用户已注销
mAuth.signOut();
}
}
};
// 自定义Facebook登录按钮的外观
loginButton.setText("使用Facebook登录");
}
// 处理Facebook访问令牌的身份验证
private void handleFacebookAccessToken(AccessToken token) {
AuthCredential credential = OAuthProvider.newBuilder("facebook.com").setAccessToken(token.getToken()).build();
mAuth.signInWithCredential(credential)
.addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if (task.isSuccessful()) {
// 用户成功登录
FirebaseUser user = mAuth.getCurrentUser();
String displayName = user.getDisplayName();
showToast("欢迎," + displayName + "!");
} else {
// 登录失败
showToast("登录失败,请重试");
}
}
});
}
// 显示Toast消息
private void showToast(String message) {
Toast.makeText(this, message, Toast.LENGTH_SHORT).show();
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
mCallbackManager.onActivityResult(requestCode, resultCode, data);
}
}
请注意,上述代码示例中的R.layout.activity_main
是指示应用程序布局文件的占位符。你需要根据自己的应用程序结构替换为实际的布局文件。
以上代码示例假设你已经在Firebase控制台中配置了Facebook作为身份验证提供商,并正确添加了相关的依赖库。此外,你还需要在AndroidManifest.xml
文件中添加相关的权限和Activity配置。
领取专属 10元无门槛券
手把手带您无忧上云