//Kakao
implementation "com.kakao.sdk:v2-user:2.10.0" // 카카오 로그인
implementation "com.kakao.sdk:v2-talk:2.10.0" // 친구, 메시지(카카오톡)
implementation "com.kakao.sdk:v2-link:2.10.0" // 메시지(카카오톡 공유)
안드로이드에서 카카오 로그인 시에 OpenID Connect를 활성화하여 JWT Token을 받아 Firebase에 연동하고자 작업중입니다.
Kotlin을 사용하고 있는데 Decoding이 원하는대로 되지 않아 질문드립니다.
suspend fun kakaoLogin(context: Context) {
try {
val tokens: OAuthToken = getKakaoTokens(context);
Log.d(TAG, "카카오 로그인 성공 ${tokens.accessToken}, ID Token ${tokens.idToken}")
val encodedIdToken = tokens.idToken
val sections : List<String> = encodedIdToken!!.split(".")
.map { encoded ->
return@map String(Base64.decode(encoded,Base64.DEFAULT))
}
Log.d(TAG, "Split Decoded Section : ${sections}")
} catch (e: Exception) {
Log.d(TAG, e.localizedMessage);
e.printStackTrace();
}
}
위와 같이 함수를 작성하였는데 Split Decoded Section에서 이해하기 | Kakao Developers 문서 에 나온것 처럼 헤더와 페이로드는 정상적으로 {} 안에 들어있는 상태로 받아와집니다. 하지만 서명(Signature) 부분은 아래 와 같이 나옵니다. Decoding 방식에 문제가 있는것 같은데 어떻게해야할지 감이 안옵니다.
이하 로그캣.
[{“kid”:“xxxxxxx”,“typ”:“JWT”,“alg”:“RS256”}, {“aud”:“xxxxx”,“sub”:“2267404192”,“auth_time”:1654172186,“iss”:“https://kauth.kakao.com”,“exp”:1654215386,“iat”:1654172186},
1���!�h,�p��"�����Mn�2� F/�[�w^s��Ԁ?YA>���]rNHzo��6�Oa�� ��I�+�4u����x ��yk[//�y��ϣ�DC7eې�X�^�M�Mr;GZ�swf���P�K�5�5��Ci�|�뮞��Q�}j�u/6’ �1RX-�1�mܷXȦ���
���02c@_���}�{�a얈�e5UW�f��cW�����呡r�p}F�GD��C*�h�����8����/?x��]