2017-05-24 13 views
1

コードが動作するようです。 Facebookとメールの仕事中のログイン。私がTwitterボタンをクリックすると、Twitterのサインインと承認ページに移動し、ログインすると何も起こりません。ログには成功は表示されず、コンソールには新しいユーザーが表示されません。エラーもありません。ここに、断片のログインがあります。申し訳ありませんが、それは乱雑ですが、私は非常に経験していない。Firebase Twitterログインがログインしない

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); 
     } 
    } 


} 
+0

Firebaseの終了時にサービスが一時的に中断されたように思われるので、この質問を閉じることにしました。 OPの答えによって証明されるように)。 –

+0

私はfirebaseサポートに連絡を取り、彼らは問題を認識しており、解決に取り掛かっていると答えました。 – Yousef

答えて

0

すべてのバックエンドのものはありますか? authパネルでTwitterのログインを有効にしたときにAPIの秘密とAPIキーをfirebaseコンソールに追加したとしますが、apps.twitter.comに行き、OAuthリダイレクトURIを追加しましたか?

https://firebase.google.com/docs/auth/android/twitter-login

+0

はいすべてが順番です – Yousef

+0

ユーザーがアプリを承認しましたか? –

+0

うん。すべてがうまく見えます。私は、Twitterの代わりにファブリックのAPIキーを使用しようとしましたが、それは役に立たなかったので、私はそれらをTwitterのものに戻しました。 – Yousef

0

これらの断片は、子供にTwitterの意図から結果を渡すために以下のコードを使用してフラグメントを

を膨張活性のTwitterLoginButton

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

にフラグメント内部ActivityResultを渡し

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); 
    } 
} 
+0

、... twitterLogin私はそれを試してみました、それは動作しませんでしたどちらか – Yousef

+0

あなたは今、失敗や成功のメッセージが取得している...あなたがメッセージを取得していないと述べた。失敗 twitterLogin:成功 この活動の結果があることを?ログインボタンに渡されたのはそれだけです... mLoginButton.setCallbackの内部にコントロールがありますか? – Gowrav

+0

フラグメントであれば、onActivityResultがアクティビティ内でオーバーライドされ、superを使用して結果が親に渡されるようにしてください。 – Gowrav

関連する問題