로그인이나 인증 한 상태에서 이용을 할 수 있게 나누는 것은 토큰이다.
토큰을 통해 인증 및 로그인 한 상태인지 알 수 있다 .
작성자는 레트로 핏을 통해 토큰을 가져왔다!
아래는 로그인 을 하는 코드 이다.
Button btnDone = findViewById(R.id.btnDone);
btnDone.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// 1. 이메일과 비번을 가져온다
String email = editEmail.getText().toString().trim();
String password = editPasswd.getText().toString().trim();
// 2. 이메일이 정상적인지 확인한다.
if(email.isEmpty()){
Toast.makeText(LoginActivity.this, "이메일이 올바르지 않습니다.",
Toast.LENGTH_SHORT).show();
return;
}
// 3. 비밀번호 갯수가 정상적인지 확인한다.
if(password.isEmpty() || password.length() < 4 ||
password.length() > 12){
Toast.makeText(LoginActivity.this, "비밀번호 길이가 맞지 않습니다.",
Toast.LENGTH_SHORT).show();
return;
}
showProgress("로그인 중입니다...");
// 4. 네트워크 통해서 API 호출한다.
Retrofit retrofit = NetworkClient.getRetrofitClient(LoginActivity.this);
UserApi api = retrofit.create(UserApi.class);
// 바디에 데이터 담아서 보낸다.
UserReq userReq = new UserReq(email, password);
Call<UserRes> call = api.userLogin(userReq);
call.enqueue(new Callback<UserRes>() {
@Override
public void onResponse(Call<UserRes> call, Response<UserRes> response) {
Log.i("MyMemoApp", ""+response.code());
dismissProgress();
// 5. 호출 결과를 보고, 처리해줄 코드를 작성한다.
if(response.isSuccessful()){
// 1. accessToken을 저장하고,
SharedPreferences sp = getSharedPreferences(Utils.PREFERENCES_NAME, MODE_PRIVATE);
String accessToken = response.body().getAccess_token();
SharedPreferences.Editor editor = sp.edit();
editor.putString("accessToken", accessToken);
editor.apply();
// 2. 메인액티비티를 띄운다.
Intent intent = new Intent(LoginActivity.this, MainActivity.class);
startActivity(intent);
finish();
}else{
}
}
@Override
public void onFailure(Call<UserRes> call, Throwable t) {
dismissProgress();
}
});
아래는 받아온 토큰을 사용하는 방법이다.
토큰이 있는 경우와 없는 경우 다른 xml로 보여주는 코드이다.
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
SharedPreferences sp = getSharedPreferences(Utils.PREFERENCES_NAME, MODE_PRIVATE);
accessToken = sp.getString("accessToken", "");
if(accessToken.isEmpty()){
// 로그인 액티비티를 띄운다.
Intent intent = new Intent(MainActivity.this, LoginActivity.class);
startActivity(intent);
finish();
}else{
Intent intent = new Intent(MainActivity.this, SelectActivity.class);
startActivity(intent);
finish();
}
}
});
// 저장소 정보
public static final String PREFERENCES_NAME = "자신의 저장소 적기";