https://developers.kakao.com/console/app/873668/config/platform
2) 동의항목 설정
내 애플리케이션 > 제품 설정 > 카카오 로그인 > 동의항목
카카오 로그인 구현 시에 카카오 서비스에 등록할 사용자의 정보를 가지고 올 수 있습니다.
ex) 프로필 정보, 성별, 이메일
이번 경우엔 프로필 정보를 필수동의, 이메일을 선택동의로 설정하겠습니다.
* 이메일은 비즈 앱인 경우에만 필수 동의가 가능합니다.
플랫폼 등록
oncreate에서
Log.d("getKeyHash", "" + getKeyHash(MainActivity.this));
함수만들어주기
public static String getKeyHash(final Context context) {
PackageManager pm = context.getPackageManager();
try {
PackageInfo packageInfo = pm.getPackageInfo(context.getPackageName(), PackageManager.GET_SIGNATURES);
if (packageInfo == null)
return null;
for (Signature signature : packageInfo.signatures) {
try {
MessageDigest md = MessageDigest.getInstance("SHA");
md.update(signature.toByteArray());
return android.util.Base64.encodeToString(md.digest(), android.util.Base64.NO_WRAP);
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
}
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
}
return null;
}
얻은 hash값
등록후
안드로이드 기본세팅
모듈 설치
https://developers.kakao.com/docs/latest/ko/getting-started/sdk-android
필요한거 grdle에 추가
인터넷 권한설정(매니페스트)
android:targetSandboxVersion="1">
<uses-permission android:name="android.permission.INTERNET" />
자바8확인(gradle)
로그인
1. 초기화 코드
Android SDK를 사용하기 위해선 가장 먼저 네이티브 앱 키로 초기화를 해야 합니다.
GlobalApplication.java 에 초기화 코드를 추가해줍니다.
AndroidManifest.xml 의 'application'에도 Kakao SDK 초기화를 수행한 클래스의 이름을 설정해야 합니다.
클래스에서 초기화를 했으므로 아래와 같이 추가해줍니다.
<activity android:name="com.kakao.sdk.auth.AuthCodeHandlerActivity">
<intent-filter>
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.DEFAULT"/>
<category android:name="android.intent.category.BROWSABLE"/>
<!--Redirect URI: "kakao{NATIVE_APP_KEY}://oauth"-->
<data
android:host="oauth"
android:scheme="{KAKAO_APP_KEY}"/>
</intent-filter>
</activity>
이런식으로
코드 작성
btnKakao.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if(UserApiClient.getInstance().isKakaoTalkLoginAvailable(LoginActivity.this)){
login();
Intent intent2 = new Intent(LoginActivity.this, MainActivity.class);
startActivity(intent2);
finish();
}
else{
accountLogin();
}
}
});
}
연결된 함수 2개 작성(login() 과 accountLogin())
어플로로그인
private void login() {
String TAG = "login()";
UserApiClient.getInstance().loginWithKakaoTalk(LoginActivity.this,(oAuthToken, error) -> {
if (error != null) {
Log.e(TAG, "로그인 실패", error);
} else if (oAuthToken != null) {
Log.i(TAG, "로그인 성공(토큰) : " + oAuthToken.getAccessToken());
getUserInfo();
}
return null;
});
}
어플이 없을때 계정으로 로그인
private void accountLogin() {
String TAG = "accountLogin()";
UserApiClient.getInstance().loginWithKakaoAccount(LoginActivity.this, (oAuthToken, error) -> {
if (error != null) {
Log.e(TAG, "로그인 실패", error);
} else if (oAuthToken != null) {
Log.i(TAG, "로그인 성공(토큰) : " + oAuthToken.getAccessToken());
getUserInfo();
SharedPreferences prefs = getSharedPreferences(Config.PREFERENCE_NAME, MODE_PRIVATE);
SharedPreferences.Editor editor = prefs.edit();
editor.putString(Config.ACCESS_TOKEN, oAuthToken.getAccessToken());
editor.apply();
// MainActivity로 화면 전환
Intent intent = new Intent(LoginActivity.this, MainActivity.class);
startActivity(intent);
Log.d(TAG,"토큰확인후 이동");
finish();
}
return null;
});
}
getuserinfo(내가 동의한 유저 정보함수)
private void getUserInfo() {
String TAG = "getUserInfo()";
UserApiClient.getInstance().me((user, meError) -> {
if (meError != null) {
Log.e(TAG, "사용자 정보 요청 실패", meError);
} else {
System.out.println("로그인 완료");
Log.i(TAG, user.toString());
{
Log.i(TAG, "사용자 정보 요청 성공" +
"\n회원번호: "+user.getId() +
"\n이메일: "+user.getKakaoAccount().getEmail());
}
Account user1 = user.getKakaoAccount();
System.out.println("사용자 계정" + user1);
}
return null;
});
}
main에서 쉐어드프리퍼런스에 넣어라
SharedPreferences sp = getSharedPreferences(Config.PREFERENCE_NAME, MODE_PRIVATE);
String accessToken = sp.getString(Config.ACCESS_TOKEN, "");
if(accessToken.isEmpty()){
Intent intent = new Intent(MainActivity.this, LoginActivity.class);
startActivity(intent);
finish();
return;
}
'android studio' 카테고리의 다른 글
[안드로이드] 클로바 보이스api 레트로핏으로 쉽게 tts어플만들기 (0) | 2023.04.03 |
---|---|
[안드로이드] 안드로이드스튜디오 구글기본 tts 사용 (0) | 2023.03.22 |
[android] 안드로이드 스튜디오 카메라/갤러리 처리하기 (0) | 2023.02.13 |
[android] Intent ACTION_VIEW Uri.parse 외부 액티비티 띄우기 (0) | 2023.02.07 |
[android] 이미지 처리를 위한 Glide 라이브러리 사용법 (0) | 2023.02.07 |