2017-06-29 125 views
0

我是初學者水平編碼器和麪臨的一個問題:/ 我實現與火力地堡的OAuth用戶登錄註冊....如何保持用戶狀態登錄火力的Oauth安卓

我登錄活動代碼是... 。

public class UserLogin extends AppCompatActivity { 
    Button SignInBtn; 
    EditText EmailField, PasswordField; 
    TextView notReg; 
    FirebaseAuth mAuth; 
    FirebaseAuth.AuthStateListener mAuthListner; 
    String UserEmail, UserPass; 


    @Override 
    protected void onResume() { 
     super.onResume(); 
    } 

    @Override 
    protected void onStart() { 
     super.onStart(); 
     mAuth.addAuthStateListener(mAuthListner); 
    } 

    @Override 
    protected void onStop() { 
     super.onStop(); 
     if (mAuthListner != null) { 
      mAuth.removeAuthStateListener(mAuthListner); 
     } 
    } 

    @Override 
    protected void onDestroy() { 
     super.onDestroy(); 
    } 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_user_login); 
     Initialization(); // views initialized 
     mAuth = FirebaseAuth.getInstance(); 
     mAuthListnerSetup(); 


     SignInBtn.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       UserEmail = EmailField.getText().toString(); 
       if (TextUtils.isEmpty(UserEmail)) { 
        EmailField.setError("Enter Email."); 
       } 
       UserPass = PasswordField.getText().toString(); 
       if (TextUtils.isEmpty(UserPass)) { 
        PasswordField.setError("Enter Password"); 
       } 
       SignIn(UserEmail, UserPass); 
      } 
     }); 

     notReg.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       startActivity(new Intent(UserLogin.this, MainActivity.class)); 
      } 
     }); 

    } //onCreate Method 

    private void mAuthListnerSetup() { 
     mAuthListner = new FirebaseAuth.AuthStateListener() { 
      @Override 
      public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) { 
       FirebaseUser user = firebaseAuth.getCurrentUser(); 
      } 
     }; 
    } 

    private void Initialization() { 
     EmailField = (EditText) findViewById(R.id.userSigninEmail); 
     PasswordField = (EditText) findViewById(R.id.userSigninPass); 
     SignInBtn = (Button) findViewById(R.id.SigninBtn); 
     notReg = (TextView) findViewById(R.id.notRegUser); 
    } 

    private void SignIn(String email, String pass) { 
     mAuth.signInWithEmailAndPassword(email, pass).addOnCompleteListener(this, new OnCompleteListener<AuthResult>() { 
      @Override 
      public void onComplete(@NonNull Task<AuthResult> task) { 
       if (!task.isSuccessful()) { 
        Toast.makeText(UserLogin.this, "Failed...", Toast.LENGTH_SHORT).show(); 
       } else { 
        startActivity(new Intent(UserLogin.this, all.class)); 
       } 
      } 
     }); 
    } 

} 

當用戶成功登錄後,新的活動開始,我想從下一個活動訪問用戶資料....:/ 在此先感謝希望我能幫助:)

回答

1

你可以使用此代碼:

FirebaseUser firebaseUser = firebaseAuth.getCurrentUser(); 
String uid = firebaseUser.getUid(); 
String userName = firebaseUser.getDisplayName(); 
String emailAddress = firebaseUser.getEmail(); 
//and so on for the others details 

要使用活動之間的數據可以使用一個Intent這樣的:

//FirstActivity 
Intent intent = new Intent(FirstActivity.this, SecondActivity.class); 
intent.putExtra("uid", uid); 
intent.putExtra("userName", userName); 
intent.putExtra("emailAddress", emailAddress); 
startActivity(intent); 

而要取回數據使用此代碼:

//SecondActivity 
String uid = (String) getIntent().getExtras().get("uid"); 
String userName = (String) getIntent().getExtras().get("userName"); 
String emailAddress = (String) getIntent().getExtras().get("emailAddress"); 

希望它能幫助。

+0

那麼,是否有任何其他方式可以從以前的活動中獲取已登錄用戶的詳細信息? –

+0

是的,還有另一種方法,將這些詳細信息存儲在'SharedPreferences'中。這意味着您可以在整個應用程序中使用它們。如果你只有一些活動,第一個更容易實現。 –

+0

恩你可以給一些指導什麼應該存儲在Prefrences和什麼檢索下一個活動....? –