ios kakaosdk v2를 사용하고 있습니다.
카카오톡 로그인이 유달리 느려서 글을 쓰게 되었습니다. 12초걸리는 현상이 계속 발생하고 있습니다. 혹시 어어떤이유인지 알 수 있을까요?
ios kakaosdk v2를 사용하고 있습니다.
카카오톡 로그인이 유달리 느려서 글을 쓰게 되었습니다. 12초걸리는 현상이 계속 발생하고 있습니다. 혹시 어어떤이유인지 알 수 있을까요?
앱 ID 알려주시면 로그 확인해보겠습니다.
앱ID
https://developers.kakao.com/ 의 내 애플리케이션>앱 설정>요약 정보 : 기본정보에 있는 앱 ID
숫자로된 ID 입니다~
ex) 123456
634443 입니다 확인부탁드리겠습니다
로그상 특이점을 확인하기 어려운데요.
카카오 sdk 상세 버전, iOS 버전, 사용한 로그인 코드 블럭좀 공유 부탁드려요.
감사합니다.
kakao sdk버전: 2.8.2
ios 13, 14, 15
사용하는 코드의 플로우는
카카오로그인 버튼을 누르면, 1. 토큰이 있는지 확인, 2. 카카오 유저 정보를 받아옴 3. 서버로 정보를넘겨서 토큰을 받음 4. 화면 전환 입니다.
if AuthApi.hasToken() {
UserApi.shared.accessTokenInfo { [weak self] (_ ,error) in
if let error = error {
if let sdkError = error as? SdkError, sdkError.isInvalidTokenError() == true {
print("로그인필요1")
self?.kakaoLogin()
}
else {
print("기타애러 \(error)")
}
} else {
print("토큰 유효성 체크 성공")
self?.kakaoUserInfo(completion: { email, nick in
APIService.shared.socialLogin(email: email, nick: nick,
accountType: AccountType.kakao) { [weak self]result in
guard let self = self else {return}
switch result {
case .success(let data):
guard let accessToken = data.accessToken else {return}
guard let refreshToken = data.refreshToken else {return}
LoginManager.shared.saveInKeychain(account: "accessToken", value: accessToken)
LoginManager.shared.saveInKeychain(account: "refreshToken", value: refreshToken)
UserManager.shared.userIdandToken = (data.id, data.accessToken)
self.navigationController?.pushViewController(MainTabBarController(), animated: true)
case .failure(let error):
print(error)
}
}
})
}
}
} else {
print("토큰없어서 로그인 필요")
self.kakaoLogin()
}
private func kakaoLogin() {
//로그인?
if UserApi.isKakaoTalkLoginAvailable() {
UserApi.shared.loginWithKakaoTalk { [weak self] (oauthToken, error) in
if let error = error {
print(error)
}
else {
print("loginwithKakaoTalk() success.")
self?.kakaoUserInfo(completion: { email, nick in
APIService.shared.socialLogin(email: email, nick: nick,
accountType: AccountType.kakao) { result in
switch result {
case .success(let data):
guard let accessToken = data.accessToken else {return}
guard let refreshToken = data.refreshToken else {return}
LoginManager.shared.saveInKeychain(account: "accessToken", value: accessToken)
LoginManager.shared.saveInKeychain(account: "refreshToken", value: refreshToken)
UserManager.shared.userIdandToken = (data.id, data.accessToken)
guard let dogInfoVC = DogInfoViewController.loadFromStoryboard() as?
DogInfoViewController else {return}
self?.navigationController?.pushViewController(dogInfoVC, animated: true)
case .failure(let error):
print(error)
}
}
})
_ = oauthToken
}
}
} else {
// 카카오톡이 없는 경우
UserApi.shared.loginWithKakaoAccount { [weak self] (oauthToken, error) in
if let error = error {
print(error)
}
else {
print("loginWithKakaoTalk() success")
self?.kakaoUserInfo(completion: { email, nick in
APIService.shared.socialLogin(email: email, nick: nick,
accountType: AccountType.kakao) { result in
switch result {
case .success(let data):
guard let accessToken = data.accessToken else {return}
guard let refreshToken = data.refreshToken else {return}
LoginManager.shared.saveInKeychain(account: "accessToken", value: accessToken)
LoginManager.shared.saveInKeychain(account: "refreshToken", value: refreshToken)
UserManager.shared.userIdandToken = (data.id, data.accessToken)
guard let dogInfoVC = DogInfoViewController.loadFromStoryboard() as?
DogInfoViewController else {return}
self?.navigationController?.pushViewController(dogInfoVC, animated: true)
case .failure(let error):
print(error)
}
}
})
_ = oauthToken
}
}
}
}
private func kakaoUserInfo(completion: @escaping (String, String) -> Void) {
var email: String = ""
var nick: String = ""
UserApi.shared.me { [weak self] (user, error) in
if let error = error {
print("kakaoError \(error)")
return
}
else {
print("me() success.")
guard let _email = user?.kakaoAccount?.email else { return }
guard let _nick = user?.properties?["nickname"] else { return }
email = _email
nick = _nick
completion(email, nick)
}
}
}
}