Skip to content

Commit 32a6578

Browse files
committed
Kakao Login (5/16)
1 parent 2d17aab commit 32a6578

File tree

5 files changed

+80
-178
lines changed

5 files changed

+80
-178
lines changed

.idea/gradle.xml

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/misc.xml

Lines changed: 0 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 79 additions & 77 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
12
package com.example.ensor;
23

34
import androidx.appcompat.app.AppCompatActivity;
@@ -15,90 +16,91 @@
1516
import kotlin.jvm.functions.Function1;
1617
import kotlin.jvm.functions.Function2;
1718

18-
public class LoginActivity extends AppCompatActivity {
19-
private static final String TAG = "LoginActivity";
20-
private View loginButton, logoutButton;
21-
private TextView nickName;
22-
private TextView email;
19+
public class LoginActivity extends AppCompatActivity {
20+
private static final String TAG = "LoginActivity";
21+
private View loginButton, logoutButton;
22+
private TextView nickName;
23+
private TextView email;
2324

24-
@Override
25-
protected void onCreate(Bundle savedInstanceState) {
26-
super.onCreate(savedInstanceState);
27-
setContentView(R.layout.activity_login);
25+
@Override
26+
protected void onCreate(Bundle savedInstanceState) {
27+
super.onCreate(savedInstanceState);
28+
setContentView(R.layout.activity_login);
2829

29-
loginButton = findViewById(R.id.login);
30-
logoutButton = findViewById(R.id.logout);
31-
nickName = findViewById(R.id.nickname);
32-
email = findViewById(R.id.email);
30+
loginButton = findViewById(R.id.login);
31+
logoutButton = findViewById(R.id.logout);
32+
nickName = findViewById(R.id.nickname);
33+
email = findViewById(R.id.email);
3334

34-
// 카카오가 설치되어 있는지 확인 하는 메서드또한 카카오에서 제공 콜백 객체를 이용함
35-
Function2<OAuthToken, Throwable, Unit> callback = new Function2<OAuthToken, Throwable, Unit>() {
36-
@Override
37-
public Unit invoke(OAuthToken oAuthToken, Throwable throwable) {
38-
// 이때 토큰이 전달이 되면 로그인이 성공한 것이고 토큰이 전달되지 않았다면 로그인 실패
39-
if(oAuthToken != null) {
35+
// 카카오가 설치되어 있는지 확인 하는 메서드또한 카카오에서 제공 콜백 객체를 이용함
36+
Function2<OAuthToken, Throwable, Unit> callback = new Function2<OAuthToken, Throwable, Unit>() {
37+
@Override
38+
public Unit invoke(OAuthToken oAuthToken, Throwable throwable) {
39+
// 이때 토큰이 전달이 되면 로그인이 성공한 것이고 토큰이 전달되지 않았다면 로그인 실패
40+
if(oAuthToken != null) {
4041

41-
}
42-
if (throwable != null) {
42+
}
43+
if (throwable != null) {
4344

45+
}
46+
updateKakaoLoginUi();
47+
return null;
4448
}
45-
updateKakaoLoginUi();
46-
return null;
47-
}
48-
};
49-
// 로그인 버튼
50-
loginButton.setOnClickListener(new View.OnClickListener() {
51-
@Override
52-
public void onClick(View view) {
53-
if(UserApiClient.getInstance().isKakaoTalkLoginAvailable(LoginActivity.this)) {
54-
UserApiClient.getInstance().loginWithKakaoTalk(LoginActivity.this, callback);
55-
}else {
56-
UserApiClient.getInstance().loginWithKakaoAccount(LoginActivity.this, callback);
57-
}
58-
}
59-
});
60-
// 로그 아웃 버튼
61-
logoutButton.setOnClickListener(new View.OnClickListener() {
62-
@Override
63-
public void onClick(View view) {
64-
UserApiClient.getInstance().logout(new Function1<Throwable, Unit>() {
65-
@Override
66-
public Unit invoke(Throwable throwable) {
67-
updateKakaoLoginUi();
68-
return null;
49+
};
50+
// 로그인 버튼
51+
loginButton.setOnClickListener(new View.OnClickListener() {
52+
@Override
53+
public void onClick(View view) {
54+
if(UserApiClient.getInstance().isKakaoTalkLoginAvailable(LoginActivity.this)) {
55+
UserApiClient.getInstance().loginWithKakaoTalk(LoginActivity.this, callback);
56+
}else {
57+
UserApiClient.getInstance().loginWithKakaoAccount(LoginActivity.this, callback);
6958
}
70-
});
71-
}
72-
});
73-
updateKakaoLoginUi();
74-
}
75-
private void updateKakaoLoginUi(){
76-
UserApiClient.getInstance().me(new Function2<User, Throwable, Unit>() {
77-
@Override
78-
public Unit invoke(User user, Throwable throwable) {
79-
// 로그인이 되어있으면
80-
if (user!=null){
59+
}
60+
});
61+
// 로그 아웃 버튼
62+
logoutButton.setOnClickListener(new View.OnClickListener() {
63+
@Override
64+
public void onClick(View view) {
65+
UserApiClient.getInstance().logout(new Function1<Throwable, Unit>() {
66+
@Override
67+
public Unit invoke(Throwable throwable) {
68+
updateKakaoLoginUi();
69+
return null;
70+
}
71+
});
72+
}
73+
});
74+
updateKakaoLoginUi();
75+
}
76+
private void updateKakaoLoginUi(){
77+
UserApiClient.getInstance().me(new Function2<User, Throwable, Unit>() {
78+
@Override
79+
public Unit invoke(User user, Throwable throwable) {
80+
// 로그인이 되어있으면
81+
if (user!=null){
8182

82-
// 유저의 아이디
83-
Log.d(TAG,"invoke: id" + user.getId());
84-
// 유저의 어카운트정보에 이메일
85-
Log.d(TAG,"invoke: nickname" + user.getKakaoAccount().getEmail());
86-
// 유저의 어카운트 정보의 프로파일에 닉네임
87-
Log.d(TAG,"invoke: email" + user.getKakaoAccount().getProfile().getNickname());
83+
// 유저의 아이디
84+
Log.d(TAG,"invoke: id" + user.getId());
85+
// 유저의 어카운트정보에 이메일
86+
Log.d(TAG,"invoke: nickname" + user.getKakaoAccount().getEmail());
87+
// 유저의 어카운트 정보의 프로파일에 닉네임
88+
Log.d(TAG,"invoke: email" + user.getKakaoAccount().getProfile().getNickname());
8889

89-
nickName.setText(user.getKakaoAccount().getProfile().getNickname());
90-
email.setText(user.getKakaoAccount().getEmail());
91-
loginButton.setVisibility(View.GONE);
92-
logoutButton.setVisibility(View.VISIBLE);
93-
}else {
94-
// 로그인이 되어 있지 않다면 위와 반대로
95-
nickName.setText(null);
96-
email.setText(null);
97-
loginButton.setVisibility(View.VISIBLE);
98-
logoutButton.setVisibility(View.GONE);
90+
nickName.setText(user.getKakaoAccount().getProfile().getNickname());
91+
email.setText(user.getKakaoAccount().getEmail());
92+
loginButton.setVisibility(View.GONE);
93+
logoutButton.setVisibility(View.VISIBLE);
94+
}else {
95+
// 로그인이 되어 있지 않다면 위와 반대로
96+
nickName.setText(null);
97+
email.setText(null);
98+
loginButton.setVisibility(View.VISIBLE);
99+
logoutButton.setVisibility(View.GONE);
100+
}
101+
return null;
99102
}
100-
return null;
101-
}
102-
});
103-
}
104-
}
103+
});
104+
}
105+
};
106+

app/src/main/java/com/example/ensor/MainActivity.java

Lines changed: 0 additions & 71 deletions
Original file line numberDiff line numberDiff line change
@@ -27,61 +27,13 @@
2727

2828
public class MainActivity extends AppCompatActivity {
2929

30-
private static final String TAG = "MainActivity";
31-
private View loginButton, logoutButton;
32-
private TextView nickName;
33-
private ImageView profileImage;
34-
private TextView email;
35-
3630
@Override
3731
protected void onCreate(Bundle savedInstanceState) {
3832
super.onCreate(savedInstanceState);
3933
setContentView(R.layout.activity_main);
4034

4135
getAppKeyHash();
4236

43-
loginButton = findViewById(R.id.login);
44-
logoutButton = findViewById(R.id.logout);
45-
nickName = findViewById(R.id.nickname);
46-
email = findViewById(R.id.email);
47-
48-
Function2<OAuthToken, Throwable, Unit> callback = new Function2<OAuthToken, Throwable, Unit>() {
49-
@Override
50-
public Unit invoke(OAuthToken oAuthToken, Throwable throwable) {
51-
if(oAuthToken != null){
52-
//
53-
}
54-
if(throwable != null){
55-
//
56-
}
57-
updateKakaoLoginUi();
58-
return null;
59-
}
60-
};
61-
62-
loginButton.setOnClickListener(new View.OnClickListener() {
63-
@Override
64-
public void onClick(View view) {
65-
if(UserApiClient.getInstance().isKakaoTalkLoginAvailable(MainActivity.this)) {
66-
UserApiClient.getInstance().loginWithKakaoTalk(MainActivity.this, callback);
67-
}else {
68-
UserApiClient.getInstance().loginWithKakaoAccount(MainActivity.this, callback);
69-
}
70-
}
71-
});
72-
// 로그 아웃 버튼
73-
logoutButton.setOnClickListener(new View.OnClickListener() {
74-
@Override
75-
public void onClick(View view) {
76-
UserApiClient.getInstance().logout(new Function1<Throwable, Unit>() {
77-
@Override
78-
public Unit invoke(Throwable throwable) {
79-
updateKakaoLoginUi();
80-
return null;
81-
}
82-
});
83-
}
84-
});
8537
}
8638

8739
private void getAppKeyHash(){
@@ -99,27 +51,4 @@ private void getAppKeyHash(){
9951
}
10052
}
10153

102-
private void updateKakaoLoginUi(){
103-
UserApiClient.getInstance().me(new Function2<User, Throwable, Unit>() {
104-
@Override
105-
public Unit invoke(User user, Throwable throwable) {
106-
if(user != null){
107-
Log.i(TAG, "invoke: id=" + user.getId());
108-
Log.i(TAG, "invoke: email=" + user.getKakaoAccount().getEmail());
109-
Log.i(TAG, "invoke: nickname=" + user.getKakaoAccount().getProfile().getNickname());
110-
111-
nickName.setText(user.getKakaoAccount().getProfile().getNickname());
112-
email.setText(user.getKakaoAccount().getEmail());
113-
loginButton.setVisibility(View.GONE);
114-
logoutButton.setVisibility(View.VISIBLE);
115-
}else{
116-
nickName.setText(null);
117-
email.setText(null);
118-
loginButton.setVisibility(View.VISIBLE);
119-
logoutButton.setVisibility(View.GONE);
120-
}
121-
return null;
122-
}
123-
});
124-
}
12554
}

app/src/main/res/layout/activity_main.xml

Lines changed: 0 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -7,33 +7,4 @@
77
android:orientation="vertical"
88
tools:context=".MainActivity">
99

10-
<LinearLayout
11-
android:layout_width="match_parent"
12-
android:layout_height="0dp"
13-
android:layout_weight="1"
14-
android:gravity="center"
15-
android:orientation="vertical">
16-
17-
<TextView
18-
android:id="@+id/nickname"
19-
android:layout_width="match_parent"
20-
android:layout_height="60dp" />
21-
22-
<TextView
23-
android:id="@+id/email"
24-
android:layout_width="match_parent"
25-
android:layout_height="60dp" />
26-
</LinearLayout>
27-
28-
<ImageView
29-
android:id="@+id/login"
30-
android:layout_width="match_parent"
31-
android:layout_height="wrap_content"
32-
android:src="@drawable/kakao_login"/>
33-
34-
<Button
35-
android:id="@+id/logout"
36-
android:layout_width="match_parent"
37-
android:layout_height="wrap_content"
38-
android:text="로그아웃"/>
3910
</LinearLayout>

0 commit comments

Comments
 (0)