我正在使用firebase在Android应用中集成facebook登录。 登录活动开始时应用程序崩溃并显示以下错误
无法启动活动ComponentInfo {com.environer.behappy / com.environer.behappy.LoginActivity}:android.view.InflateException:二进制XML文件行#20:二进制XML文件行#20:错误膨胀类com.facebook .login.widget.LoginButton
在新的facebook SDK中,无需通过调用FacebookSdk.initializeSdk()初始化sdk,因为它将自动初始化
我使用com.facebook.login.widget.LoginButton
导入了登录按钮我也在CallBackManager上调用了onActivityResult
我的代码在下面
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
mCallBackManager = CallbackManager.Factory.create();
ButterKnife.bind(this);
mAuth = FirebaseAuth.getInstance();
configureGoogleSignIn();
}
@OnClick(R.id.button_facebook)void facebookSignIn(){
LoginButton loginButton = (LoginButton) findViewById(R.id.button_facebook);
loginButton.setReadPermissions("email","public_profile");
loginButton.registerCallback(mCallBackManager, new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult loginResult) {
handleFacebookAccessToken(loginResult.getAccessToken());
}
@Override
public void onCancel() {
Toast.makeText(LoginActivity.this, getString(R.string.loginCancel), Toast.LENGTH_SHORT).show();
}
@Override
public void onError(FacebookException error) {
Toast.makeText(LoginActivity.this, error.getMessage(), Toast.LENGTH_SHORT).show();
}
});
}
private void handleFacebookAccessToken(AccessToken accessToken) {
AuthCredential credential = FacebookAuthProvider.getCredential(accessToken.getToken());
mAuth.signInWithCredential(credential)
.addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if(task.isSuccessful()){
FirebaseUser user = mAuth.getCurrentUser();
Toast.makeText(LoginActivity.this, getString(R.string.welcomeText) + user.getDisplayName(), Toast.LENGTH_SHORT).show();
}
else{
Toast.makeText(LoginActivity.this, task.getException().getMessage(), Toast.LENGTH_SHORT).show();
}
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if(requestCode == SIGNIN_CODE){
GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data);
if(result.isSuccess()){
GoogleSignInAccount account = result.getSignInAccount();
firebaseAuthWithGoogle(account);
}
else{
//Google signin Failed
Toast.makeText(this, result.getStatus().toString(), Toast.LENGTH_SHORT).show();
}
}else{
super.onActivityResult(requestCode,resultCode,data);
mCallBackManager.onActivityResult(requestCode,resultCode,data);
}
}
我的XML代码
<com.facebook.login.widget.LoginButton
android:background="@color/colorPrimary"
android:id="@+id/button_facebook"
android:layout_width="300dp"
android:layout_height="60dp"
android:textSize="20sp"
android:paddingTop="10dp"
android:paddingBottom="10dp"
android:layout_below="@+id/imageViewGmail"
android:layout_alignLeft="@+id/imageViewGmail"
android:layout_alignStart="@+id/imageViewGmail"
android:layout_marginTop="12dp" />