sln01
11월 9, 2020, 10:19오전
1
ios로 카카오 로그인 구현시 loginWithKakaoTalk을 사용한 카카오톡 최초 로그인시
[2020-11-09 07:11:21109 [ ][AuthController.swift 94:25] -> 카카오톡 실행: kakaokompassauth://authorize?.. ]이라는 메시지만 남기고 에러 메시지 및 success 동작도 안합니다.
if (AuthApi.isKakaoTalkLoginAvailable()) {
AuthApi.shared.loginWithKakaoTalk {(oauthToken, error) in
if let error = error {
print(error)
}
else {
print("loginWithKakaoTalk() success.")
//do something
self.userInfo()
}
}
}else{
AuthApi.shared.loginWithKakaoAccount {(oauthToken, error) in
if let error = error {
print(error)
if let rootViewController=self.window?.rootViewController{
UIAlertController.showMessage(rootViewController, error.localizedDescription)
}
}
else {
print("loginWithKakaoAccount() success.")
self.userInfo()
}
}
}
사용법에 문제가 있는건가요?
사용하는 sdk version, app id, 그리고, 디버그 로그 캡쳐도 가능하시면 부탁드립니다.
그리고,
두 메소드는 로그인시 서로 상관관계가 없습니다. (서로 다른 계정으로도 로그인이 됩니다.)
sln01
11월 10, 2020, 9:09오전
3
sdk version
ios : 14.0
kakao version : 2.0
app id = com.smarttraker.smartRunwatch
2020-11-10 06:03:48956 [ ][AuthController.swift 94:25] -> 카카오톡 실행: kakaokompassauth://authorize?client_id=290f9df145c308fcfd3819f210******&response_type=code&redirect_uri=kakao290f9df145c308fcfd3819f210******://oauth&headers=%7B%22KA%22:%22sdk%5C/1.0%20sdk_type%5C/swift%20os%5C/ios-14.0.1%20lang%5C/ko-KR-KR%20res%5C/414x896%20device%5C/iPhone%20origin%5C/com.smarttraker.smartRunwatch%20app_ver%5C/1.0%22%7D
2020-11-10 06:03:51386 [ ][AuthController.swift 94:25] -> 카카오톡 실행: kakaokompassauth://authorize?headers=%7B%22KA%22:%22sdk%5C/1.0%20sdk_type%5C/swift%20os%5C/ios-14.0.1%20lang%5C/ko-KR-KR%20res%5C/414x896%20device%5C/iPhone%20origin%5C/com.smarttraker.smartRunwatch%20app_ver%5C/1.0%22%7D&client_id=290f9df145c308fcfd3819f210******&redirect_uri=kakao290f9df145c308fcfd3819f210******://oauth&response_type=code
제 디버깅 로그엔 이렇게만 나오네요.
로그상 코드발급은 된 상태이며, 이후 토큰발급을 위한 AppDelegate 추가 작업이 누락된거 같습니다.
https://developers.kakao.com/docs/latest/ko/kakaologin/ios
위 가이드를 참고하세요~
sln01
11월 10, 2020, 10:07오전
5
sln01:
AuthApi.shared.loginWithKakaoTalk {(oauthToken, error) in
if let error = error {
print(error)
}
else {
print(“loginWithKakaoTalk() success.”)
//do something
self.userInfo()
}
}
코드 발급이 된상태라면 내부 구문이 실행이 안되나요?
sln01
11월 10, 2020, 10:55오전
6
이부분을 말씀드린건
앱을 설치하고 최초로그인시 loginWithKakaoAccount 를 사용하면 성공적으로 로그인이 됩니다.
하지만 loginWithKakaoTalk 를 사용해 로그인할경우 카카오톡 화면 이 잠시 나왔다가 사라진뒤 내부에 성공여부를 판단하는 코드가 아무리 기다려도 실행이 안되는 문제때문에 말씀드렸습니다.
코드발급은 카카오톡을 통해서 받아오게 되고
AppDelegate에 추가한 코드로 토큰발급까지 완료가 되어야 해당 내부구문이 실행됩니다.
가이드대로 해주세요~
저는 위 내용에 대해서 답변을 드린것입니다. 선후 관계 상관없이 두 메소드는 관련이 없습니다.
추가 설명을 드리자면
loginWithKakaoTalk 은 제가 링크드린 가이드대로 AppDelegate에 추가 코드와 URL Scheme등을 추가하지 않으면
앞서 loginWithKakaoAccount 을 호출한다고 하더라도 절대로 정상동작을 할리가 없습니다.
sln01
11월 10, 2020, 11:15오전
9
loginWithKakaoAccount 는 URL 스킴만 제대로 설정하면 정상동작하는것이 맞습니다.
위 메소드는 정상동작하니 상관없고요.
loginWithKakaoTalk 메소드가 정상동작 안한다는 얘기 아닌지요?
아래 코드 추가하셨나요??
loginWithKakaoTalk 는 아래코드를 추가하지 않으면 토큰이 발급되지 않습니다!!
import KakaoSDKAuth
...
class AppDelegate: UIResponder, UIApplicationDelegate {
...
func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool {
if (AuthApi.isKakaoTalkLoginUrl(url)) {
return AuthController.handleOpenUrl(url: url)
}
return false
}
...
}
혹시 SceneDelegate 를 사용하나요?
loginWithKakaoTalk 메소드 호출했을때 카카오톡에서 개발하는 앱으로 다시 돌아오나요?
그런데, 토큰발급이 안된다는 얘기인가요? -_ -;;;
URL Scheme 추가.
AppDelegate에 위 코드추가. (SceneDelegate 사용안한다고 하셨으니…)
위1,2 제대로 했으면…정상동작 안할리가 없는데요;
SDK 샘플앱 참조 부탁드립니다.
PS.
sln01:
사용 안합니다.
혹시 프로젝트 내에는 존재하는데 개발자 본인이 사용안한다는 얘기인가요?
아니면 프로젝트내에 아예 없다는 얘기인가요?
sln01
11월 11, 2020, 8:13오전
17
아 SceneDelegate 문제 였군요 감사합니다.
1개의 좋아요