🟨 목 차 🟨
1. 파이어베이스를 선택한 이유
2. 로그아웃
3. 회원탈퇴
회원가입을 하고 그 정보로 로그인을 했다. 그 후에 다른 아이디로 로그인을 하고 싶거나 개인정보 유출 우려로 인해 로그아웃과 회원탈퇴는 필요한 기능이다. 나는 이 기능들을 구현하기 위해 파이어베이스 인증과 파이어베이스 realtimebase를 이용하기로 하였다.
◼️ 1. 파이어베이스를 선택한 이유 ◼️
내가 파이어베이스를 선택한 이유는 아래글을 참고하면 되겠다.
https://bj-turtle.tistory.com/19?category=1055470
◼️ 2. 로그아웃 ◼️
나는 로그아웃 기능을 구현하기 위해서 파이어베이스 인증을 이용하기로 하였다.
즉, 파이어베이스 인증에서 인스턴스를 얻고 그것을 통해 로그인한 정보를 기반으로 파이어베이스는 로그아웃 기능도 제공해주기 때문이다.(단, 파이어베이스 인증에서 로그인이 되어있는 상태여야한다.)
<Fragment4_me.java>
private FirebaseAuth mFirebaseAuth; // 파이어베이스 인증 관련 라이브러리
private DatabaseReference mDatabaseRef; // 파이어베이스 실시간 DB 라이브러리
mFirebaseAuth = FirebaseAuth.getInstance(); // 파이어베이스 인증 인스턴스 획득
mDatabaseRef = FirebaseDatabase.getInstance().getReference("shopproject"); // 파이어베이스 DB 인스턴스 획득 및 shopproject 상위 가지 형성
logout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); //AlertDialog.Builder 를 이용한 builder 객체 생성
builder.setTitle("안내");
builder.setMessage("로그아웃 하시겠습니까?");
builder.setIcon(android.R.drawable.ic_dialog_alert);
builder.setPositiveButton("예", new DialogInterface.OnClickListener() { //예를 클릭 했을때
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(getContext(),"로그아웃 되었습니다", Toast.LENGTH_SHORT).show(); // 토스트 메세지
mFirebaseAuth.signOut(); //파이어 베이스 로그아웃
Intent intent = new Intent(getActivity(), Log_phone.class); //인텐트로 로그인 액티비티 이동
startActivity(intent);
}
});
builder.setNegativeButton("아니오", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) { // 아니오를 클릭 했을때
Toast.makeText(getContext(),"취소", Toast.LENGTH_SHORT).show(); // 토스트 메세지
}
});
AlertDialog alertDialog = builder.create(); // builder.create()를 이용한 alertDialog 객체 생성
alertDialog.show(); // alertDialog 객체의 show 메소드 시작
}
});
◼️ 3. 회원탈퇴 ◼️
나는 회원탈퇴 기능을 구현하기 위해서 파이어베이스 인증을 이용하기로 하였다.
즉, 파이어베이스 인증에서 인스턴스를 얻고 그것을 통해 로그인한 정보를 기반으로 파이어베이스는 회원탈퇴 기능도 제공해주기 때문이다.( 단, 파이어베이스 인증에서 로그인이 되어있는 상태여야한다.
또한 생각해야 할 것은 로그인을 할 때 로그인 저장 정보를 Sharedpreferneces에 저장하였는데(자동 로그인 기능) 이것을 삭제하는 기능이다.
또한 파이어베이스 realtimebase에 저장된 회원 정보도 삭제해야 한다.)
private FirebaseAuth mFirebaseAuth; // 파이어베이스 인증 관련 라이브러리
private DatabaseReference mDatabaseRef; // 파이어베이스 실시간 DB 라이브러리
mFirebaseAuth = FirebaseAuth.getInstance(); // 파이어베이스 인증 인스턴스 획득
mDatabaseRef = FirebaseDatabase.getInstance().getReference("shopproject"); // 파이어베이스 DB 인스턴스 획득 및 shopproject 상위 가지 형성
membership_withdrawal.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); //AlertDialog.Builder 를 이용한 builder 객체 생성
builder.setTitle("안내");
builder.setMessage("회원탈퇴 하시겠습니까?");
builder.setIcon(android.R.drawable.ic_dialog_alert);
builder.setPositiveButton("예", new DialogInterface.OnClickListener() { //예를 클릭 했을때
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(getContext(),"회원탈퇴 되었습니다", Toast.LENGTH_SHORT).show(); // 토스트 메세지
mFirebaseAuth.getCurrentUser().delete(); //파이어 베이스 인증에 등록된 회원탈퇴
mDatabaseRef.child("Product_Content").child(mFirebaseAuth.getUid()).setValue(null); //파이어 베이스 realtimebase 데이터 삭제
//로그인을 할 때 로그인 저장 정보를 Sharedpreferneces에 저장하였는데 이것을 삭제하는 기능이다.
SharedPreferences pref = getActivity().getSharedPreferences("appData", Context.MODE_PRIVATE);
//getSharedPreferences("Preferences이름",MODE_PRIVATE) 메소드를 이용하여 SharedPreferences 인스턴스를 획득한다.
SharedPreferences.Editor editor = pref.edit(); //SharedPreferences Editor 객체 생성
editor.clear(); //Preferneces 전체 삭제
editor.commit(); //Editor commit
// 참고 : https://sunful.tistory.com/8
Intent intent = new Intent(getActivity(), Log_phone.class); //인텐트로 로그인 액티비티 이동
startActivity(intent);
}
});
builder.setNegativeButton("아니오", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) { // 아니오를 클릭 했을때
Toast.makeText(getContext(),"취소", Toast.LENGTH_SHORT).show(); // 토스트 메세지
}
});
AlertDialog alertDialog = builder.create(); // builder.create()를 이용한 alertDialog 객체 생성
alertDialog.show(); // alertDialog 객체의 show 메소드 시작
}
});
'프로젝트 > Android Studio_중고거래앱_Project' 카테고리의 다른 글
Android Studio_중고거래 앱(Firebase Authentication, Realtime Database를 이용하여 ID, PWD 찾기 ) (0) | 2022.08.08 |
---|---|
Android Studio_중고거래 앱(SharedPreferences를 이용한 로그인 정보 저장 구현(자동 로그인) ) (0) | 2022.08.05 |
Android Studio_중고거래 앱(프래그먼트 >> 액티비티로의 데이터[위치 정보] 전달) (0) | 2022.08.04 |
Android Studio_중고거래 앱(구글 Map Api 사용을 하여 현재 위치 추출하기) (0) | 2022.08.04 |
Android Studio_중고거래 앱(등록된 상품 목록을 클릭하면 자세한 상품 내용 보여주는 화면 구성) (0) | 2022.08.04 |