public class MainActivity extends AppCompatActivity {
EditText etId;
EditText etPw;
private FirebaseAuth mAuth; // 현재 Firebase 인증 상태 확인 변수
private static final String TAG = "MainActivity";
ProgressBar progressBar;
FirebaseDatabase database;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
database = FirebaseDatabase.getInstance(); // FirebaseDatabase 인스턴스를 초기화
mAuth = FirebaseAuth.getInstance(); // FirebaseAuth 인스턴스를 초기화
etId = (EditText) findViewById(R.id.etId);
etPw = (EditText) findViewById(R.id.etPw);
progressBar = (ProgressBar)findViewById(R.id.progressbar);
Button login = (Button)findViewById(R.id.login);
login.setOnClickListener(new View.OnClickListener() { // 로그인 버튼을 누르면 onClick 메서드 발생
@Override
public void onClick(View v) {
String stEmail = etId.getText().toString(); // 아이디 입력창에 입력한 문자열을 stEmail에 대입
String stPw = etPw.getText().toString(); // 패스워드 입력창에 입력한 문자열을 stPw에 대입
if(stEmail.isEmpty()) { // 아이디 입력창이 비어있으면
Toast.makeText(MainActivity.this, "이메일을 입력하세요. ", Toast.LENGTH_SHORT).show();
return;
}
if (stPw.isEmpty()) { // 패스워드 입력창이 비어있으면
Toast.makeText(MainActivity.this, "패스워드를 입력해주세요. ", Toast.LENGTH_SHORT).show();
return;
}
progressBar.setVisibility(View.VISIBLE); // 로그인 버튼을 누르면 gone에서 visible로 바뀌면서 프로그래스바가 보여지게됨
Button register = (Button)findViewById(R.id.register);
register.setOnClickListener(new View.OnClickListener() { // 회원가입 버튼을 누르면
@Override
public void onClick(View v) {
String stEmail = etId.getText().toString(); // 아이디 입력창에 입력한 문자열을 stEmail에 대입함
String stPw = etPw.getText().toString(); // 패스워드 입력창에 입력한 문자열을 stPw에 대입함
if(stEmail.isEmpty()) { // stEmail이 비어있다면
Toast.makeText(MainActivity.this, "이메일을 입력하세요. ", Toast.LENGTH_SHORT).show();
return;
}
if(stPw.isEmpty()) { // stPW이 비어있다면
Toast.makeText(MainActivity.this, "패스워드를 입력하세요. ", Toast.LENGTH_SHORT).show();
return;
}
progressBar.setVisibility(View.VISIBLE); // 로그인 버튼을 누르면 visible로 바뀌면서 프로그래스바가 보여지게됨
// 신규 회원가입
mAuth.createUserWithEmailAndPassword(stEmail, stPw)
.addOnCompleteListener(MainActivity.this, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
progressBar.setVisibility(View.GONE); // 로딩이 끝나면 gone으로 바뀌면서 사라짐
if(task.isSuccessful()) { // 회원가입에 성공했다면
Log.d(TAG, "이메일 생성에 성공하였습니다. ");
FirebaseUser user = mAuth.getCurrentUser(); // 로그인한 회원의 계정정보 가져오기
DatabaseReference myRef = database.getReference("users").child(user.getUid()); // 회원가입을 하면 유니크아이디가 생기는데 user의 chile에 생성
Hashtable<String, String> numbers // 해시테이블에 이메일과 텍스트가 들어감
= new Hashtable<String, String>();
numbers.put("email", user.getEmail()); // 회원의 이메일 가져오기
Toast.makeText(MainActivity.this, "회원가입 성공", Toast.LENGTH_SHORT).show(); // 회원가입을 하면 user 데이터베이스에 정보가 들어감
myRef.setValue(numbers);
} else {
Log.w(TAG, "이메일 생성에 실패하였습니다. ", task.getException());
Toast.makeText(MainActivity.this, "이메일 생성에 실패하였습니다. ", Toast.LENGTH_SHORT).show();
}
}
});
}
});
// 기존 사용자 로그인
mAuth.signInWithEmailAndPassword(stEmail, stPw)
.addOnCompleteListener(MainActivity.this, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
progressBar.setVisibility(View.GONE); // 로딩이 끝나면 gone으로 바뀌면서 프로그래스바가 다시 안보여짐
if(task.isSuccessful()) { // 로그인에 성공한다면
Log.d(TAG, "이메일 로그인에 성공하였습니다. ");
FirebaseUser user = mAuth.getCurrentUser(); // 로그인한 회원의 계정 정보 가져오기
String stUserEmail = user.getEmail(); // 사용자의 이메일을 가져와서 문자열 레퍼런스 stUserEmail에 대입
Log.d(TAG, "회원님의 이메일: " + stUserEmail );
Toast.makeText(MainActivity.this, "로그인이 되었습니다. ", Toast.LENGTH_SHORT).show();
SharedPreferences sharedPref = getSharedPreferences("shared", Context.MODE_PRIVATE); //
SharedPreferences.Editor editor = sharedPref.edit();
editor.putString("email", stUserEmail);
editor.commit(); // editor에 commit()을 사용하여 디크스에 동기적으로 쓸 수 있음
Intent intent = new Intent(MainActivity.this, ChatActivity.class);
intent.putExtra("email", stEmail); // 로그인하면서 채팅창으로 화면전환할 때 이메일도 넘기기
startActivity(intent);
} else { // 로그인에 실패하면
Log.w(TAG, "이메일 로그인에 실패하였습니다. ", task.getException());
Toast.makeText(MainActivity.this, "로그인에 실패하였습니다. ", Toast.LENGTH_SHORT).show();
}
}
});
}
});
}
@Override
public void onStart() {
super.onStart();
FirebaseUser currentUser = mAuth.getCurrentUser(); // 로그인한 회원의 계정 데이터 정보 가져오기
}
}