Android Firebase Twitter登录未登录

Android Firebase Twitter登录未登录,android,firebase,firebase-authentication,Android,Firebase,Firebase Authentication,代码似乎有效。Facebook和电子邮件登录工作。当我点击twitter按钮时,它会将我带到twitter登录和授权页面,我登录,然后什么也没发生。日志不显示成功,console不显示新用户。也没有错误。这是登录片段。对不起,如果它很乱,但我不是很有经验 public class Login_Fragment extends Fragment implements OnClickListener { private View view; private EditText ed

代码似乎有效。Facebook和电子邮件登录工作。当我点击twitter按钮时,它会将我带到twitter登录和授权页面,我登录,然后什么也没发生。日志不显示成功,console不显示新用户。也没有错误。这是登录片段。对不起,如果它很乱,但我不是很有经验

public class Login_Fragment extends Fragment implements OnClickListener {
    private View view;


    private EditText editTextEmail, editTextPassword;
    private Button loginButton;
    private TextView forgotPassword, signUp;
    private CheckBox show_hide_password, remember_me;
    private LinearLayout loginLayout;
    private static Animation shakeAnimation;


    private FirebaseAuth.AuthStateListener mAuthListener;

    FragmentManager manager;

    private FirebaseAuth mAuth;

    private TwitterLoginButton mLoginButton;

    private static final String TAG = "TwitterLogin";




    public Login_Fragment() {

    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {

        TwitterAuthConfig authConfig = new TwitterAuthConfig(
                getString(R.string.twitter_consumer_key),
                getString(R.string.twitter_consumer_secret));
        Fabric.with(getActivity(), new com.twitter.sdk.android.Twitter(authConfig), new Twitter(authConfig));

        view = inflater.inflate(R.layout.login_layout, container, false);
        getActivity().setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

        manager = getFragmentManager();

        mAuth = FirebaseAuth.getInstance();


        initViews();
        setListeners();



        mLoginButton.setCallback(new Callback<TwitterSession>() {
            @Override
            public void success(Result<TwitterSession> result) {

                Log.d(TAG, "twitterLogin:success" + result);

                handleTwitterSession(result.data);


            }

            @Override
            public void failure(TwitterException exception) {

                Log.w(TAG, "twitterLogin:failure", exception);

            }
        });




        return view;
    }

    @Override
    public void onStart() {
        super.onStart();

        FirebaseUser currentUser = mAuth.getCurrentUser();
    }

    @Override
    public void onResume(){
        super.onResume();

    }



    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);


        Fragment fragment = getFragmentManager().findFragmentByTag(Utils.Login_Fragment);
        if (fragment != null) {
            fragment.onActivityResult(requestCode, resultCode, data);
        }
    }

    private void handleTwitterSession(TwitterSession session) {

        Log.d(TAG, "handleTwitterSession:" + session);


        AuthCredential credential = TwitterAuthProvider.getCredential(
                session.getAuthToken().token,
                session.getAuthToken().secret);


        mAuth.signInWithCredential(credential)
                .addOnCompleteListener(getActivity(), new OnCompleteListener<AuthResult>() {
                    @Override
                    public void onComplete(@NonNull Task<AuthResult> task) {
                        if (task.isSuccessful()) {

                            Log.d(TAG, "signInWithCredential:success");

                            FragmentTransaction ft = getActivity().getSupportFragmentManager().beginTransaction();
                            ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);

                            BuySell_Fragment frag = new BuySell_Fragment();

                            ft.replace(R.id.frameContainer, frag);
                            ft.addToBackStack(null);
                            ft.commit();

                        } else {

                            Log.w(TAG, "signInWithCredential:failure", task.getException());
                            Toast.makeText(getContext(), "Authentication failed.",
                                    Toast.LENGTH_SHORT).show();

                        }


                    }
                });
    }



    private void initViews() {

        editTextEmail = (EditText) view.findViewById(R.id.login_emailid);
        editTextPassword = (EditText) view.findViewById(R.id.login_password);
        loginButton = (Button) view.findViewById(R.id.loginBtn);
        forgotPassword = (TextView) view.findViewById(R.id.forgot_password);
        signUp = (TextView) view.findViewById(R.id.createAccount);
        show_hide_password = (CheckBox) view
                .findViewById(R.id.show_hide_password);
        loginLayout = (LinearLayout) view.findViewById(R.id.login_layout);
        remember_me = (CheckBox) view.findViewById(R.id.remember_me);

        mLoginButton = (TwitterLoginButton) view.findViewById(R.id.button_twitter_login);



        shakeAnimation = AnimationUtils.loadAnimation(getActivity(),
                R.anim.shake);


    }

    // Set Listeners
    private void setListeners() {
        loginButton.setOnClickListener(this);
        forgotPassword.setOnClickListener(this);
        signUp.setOnClickListener(this);

        show_hide_password.setOnCheckedChangeListener(new OnCheckedChangeListener() {

            @Override
            public void onCheckedChanged(CompoundButton button,
                                         boolean isChecked) {


                if (isChecked) {

                    show_hide_password.setText(R.string.hide_pwd);// change

                    editTextPassword.setInputType(InputType.TYPE_CLASS_TEXT);
                    editTextPassword.setTransformationMethod(HideReturnsTransformationMethod
                            .getInstance());
                } else {
                    show_hide_password.setText(R.string.show_pwd);

                    editTextPassword.setInputType(InputType.TYPE_CLASS_TEXT
                            | InputType.TYPE_TEXT_VARIATION_PASSWORD);
                    editTextPassword.setTransformationMethod(PasswordTransformationMethod
                            .getInstance());

                }

            }
        });


    }

    @Override
    public void onClick(View v) {

        String email = editTextEmail.getText().toString();
        String password = editTextPassword.getText().toString();


        switch (v.getId()) {
            case R.id.loginBtn:

                if (email.isEmpty() || password.isEmpty()) {
                    new CustomToast().Show_Toast(getActivity(), view,
                            "المرجو ادخال ايميل و كلمة سر");
                } else {

                    checkValidation();

                    signIn(email, password);

                }


                break;

            case R.id.forgot_password:

                android.support.v4.app.FragmentTransaction ft =
                        getActivity().getSupportFragmentManager().beginTransaction();
                ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);

                ForgotPassword_Fragment frag = new ForgotPassword_Fragment();

                ft.replace(R.id.frameContainer, frag);
                ft.addToBackStack(null);
                ft.commit();

                break;

            case R.id.createAccount:

                android.support.v4.app.FragmentTransaction fpft =
                        getActivity().getSupportFragmentManager().beginTransaction();
                fpft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);

                SignUp_Fragment fpfrag = new SignUp_Fragment();

                fpft.replace(R.id.frameContainer, fpfrag);
                fpft.addToBackStack(null);
                fpft.commit();


        }

    }


    private void checkValidation() {

        String getEmailId = editTextEmail.getText().toString();
        String getPassword = editTextPassword.getText().toString();


        Pattern p = Pattern.compile(Utils.regEx);

        Matcher m = p.matcher(getEmailId);

        // Check for both field is empty or not
        if (getEmailId.equals("") || getEmailId.length() == 0
                || getPassword.equals("") || getPassword.length() == 0) {
            loginLayout.startAnimation(shakeAnimation);
            new CustomToast().Show_Toast(getActivity(), view,
                    "جميع الخانات مطلوبة");

        }

        else if (!m.find())
            new CustomToast().Show_Toast(getActivity(), view,
                    "الايميل غير صحيح");


    }


    private void signIn(String email, String password) {

        mAuth.signInWithEmailAndPassword(email, password).addOnCompleteListener(new OnCompleteListener<AuthResult>() {
            @Override
            public void onComplete(@NonNull Task<AuthResult> task) {

                if (!task.isSuccessful()) {
                    new CustomToast().Show_Toast(getActivity(), view,
                            "محاولة تسجبل الدخول فشلت");
                } else {
                    FragmentTransaction ft = getActivity().getSupportFragmentManager().beginTransaction();
                    ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);

                    BuySell_Fragment frag = new BuySell_Fragment();

                    ft.replace(R.id.frameContainer, frag);
                    ft.addToBackStack(null);
                    ft.commit();
                }

            }
        });

    }


    @Override
    public void onDetach() {
        super.onDetach();

        try {
            Field fragmentManager = Fragment.class.getDeclaredField("mFragmentManager");
            fragmentManager.setAccessible(true);
            fragmentManager.set(this, null);


        } catch (NoSuchFieldException e) {
            throw new RuntimeException(e);
        } catch (IllegalAccessException e) {
            throw new RuntimeException(e);
        }
    }


}
公共类登录\u片段扩展了片段实现OnClickListener{
私人视野;
私人编辑邮件,编辑密码;
私人按钮登录按钮;
私人文本查看放弃密码,注册;
私人复选框显示隐藏密码,记住我;
私人线路布局后勤布局;
私有静态动画;
私有FirebaseAuth.AuthStateListener mAuthListener;
碎片管理器;
私人消防队;
私有TwitterLoginButton mLoginButton;
私有静态最终字符串TAG=“TwitterLogin”;
公共登录\u片段(){
}
@凌驾
创建视图上的公共视图(布局、充气机、视图组容器、,
Bundle savedInstanceState){
TwitterAuthConfig authConfig=新建TwitterAuthConfig(
getString(R.string.twitter\u consumer\u key),
getString(R.string.twitter_consumer_secret));
Fabric.with(getActivity(),new com.twitter.sdk.android.twitter(authConfig),new twitter(authConfig));
视图=充气机。充气(R.layout.login\u布局,容器,false);
getActivity().setRequestedOrientation(ActivityInfo.SCREEN\u ORIENTATION\u Grait);
manager=getFragmentManager();
mAuth=FirebaseAuth.getInstance();
initViews();
setListeners();
setCallback(新的回调(){
@凌驾
公开作废成功(结果){
Log.d(标记“twitterLogin:success”+结果);
handleTwitterSession(结果数据);
}
@凌驾
公共无效失败(TwitterException异常){
Log.w(标记“twitterLogin:failure”,异常);
}
});
返回视图;
}
@凌驾
public void onStart(){
super.onStart();
FirebaseUser currentUser=mAuth.getCurrentUser();
}
@凌驾
恢复时公开作废(){
super.onResume();
}
@凌驾
ActivityResult上的公共void(int请求代码、int结果代码、意图数据){
super.onActivityResult(请求代码、结果代码、数据);
Fragment Fragment=getFragmentManager().findFragmentByTag(Utils.Login_Fragment);
if(片段!=null){
onActivityResult(请求代码、结果代码、数据);
}
}
私有无效handleTwitterSession(TwitterSession会话){
Log.d(标签“handleTwitterSession:+会话”);
AuthCredential credential=TwitterAuthProvider.getCredential(
session.getAuthToken().token,
session.getAuthToken().secret);
mAuth.SIGNWITH凭证(凭证)
.addOnCompleteListener(getActivity(),new OnCompleteListener()){
@凌驾
未完成的公共void(@NonNull任务){
if(task.issusccessful()){
Log.d(标记“signInWithCredential:success”);
FragmentTransaction ft=getActivity().getSupportFragmentManager().beginTransaction();
ft.setTransition(FragmentTransaction.transition\u FRAGMENT\u OPEN);
BuySell_Fragment frag=新的BuySell_Fragment();
ft.更换(R.id.frameContainer,frag);
ft.addToBackStack(空);
ft.commit();
}否则{
w(标记“signInWithCredential:failure”,task.getException());
Toast.makeText(getContext(),“身份验证失败”,
吐司。长度(短)。show();
}
}
});
}
私有void initViews(){
editTextEmail=(EditText)view.findViewById(R.id.login\u emailid);
editTextPassword=(EditText)view.findViewById(R.id.login\u密码);
loginButton=(按钮)view.findviewbyd(R.id.loginBtn);
forgotPassword=(TextView)view.findViewById(R.id.forget\u password);
signUp=(TextView)view.findViewById(R.id.createAccount);
显示\隐藏\密码=(复选框)视图
.findviewbyd(R.id.show\u hide\u密码);
loginLayout=(LinearLayout)view.findViewById(R.id.login\u布局);
记住我=(复选框)view.findviewbyd(R.id.membered\u me);
mLoginButton=(TwitterLoginButton)view.findViewById(R.id.button\u twitter\u login);
shakeAnimation=AnimationUtils.loadAnimation(getActivity(),
R.anim.shake);
}
//设置侦听器
私有void setListeners(){
setOnClickListener(这个);
forgotPassword.setOnClickListener(此);
signUp.setOnClickListener(this);
显示\隐藏\密码。setOnCheckedChangeListener(新的OnCheckedChangeListener(){
@凌驾
检查更改后的公共无效(复合按钮,
布尔值(已检查){
如果(已检查){
show_hide_password.setText(R.string.hide_pwd);//更改
editTextPassword.setInputType(InputType.TYPE\u CLASS\u TEXT);
editTextPassword.setTransformationMethod(HideReturnsTransformationMethod
.getInstance());
}否则{
show_hide_password.setText(R.string.show_pwd);
editTextPassword.setInputType(InputType.TYPE\u CLASS\u TEXT
|InputType.TYPE\u TEXT\u VARIATION\u PASSWO
@Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        mLoginButton.onActivityResult(requestCode, resultCode, data);
}
public void onActivityResult(int requestCode, int resultCode, Intent intent) {
    super.onActivityResult(requestCode, resultCode, intent);
    Fragment fragment = (Fragment) getChildFragmentManager().findFragmentByTag(childTag);
    if (fragment != null) {
        fragment.onActivityResult(requestCode, resultCode, intent);
    }
}