Fesetools에 카카오 SDK 연동이 잘 안됩니다

fuse에서 카카오 연동관련 자료를 찾을 수 없어 반나절 다른 자료 참고하여 로그인 호출까지 성공한것으로 보이나 처음에 로그인 요청하면 카카오톡이 처음 호출될 때 fuse에서 application url이 Main UI에서 호출되지않아 내부적으로 예외가 발생하고 (이것이 SDK에서 호출되는 콜백이라면 메인 스레드에서 발생하도록 변경되는게 더 맞지 않을까요?) 이후, 카톡에서 승인하면 oauth 토큰이 넘어오지만 로그인 실패 메시지가 뜹니다.

앱에서 승인 이후 url 수신 이벤트가 발생하고 openWithCompletionHandler의 콜백이 호출되는거로 보아 isKakaoAccountLoginCallback에서 YES를 반환하였고 handleOpenURL까지 호출 된거로 보이는데 NSLog에서는 login failed 메시지를 타게됩니다.

일단 최소한의 소스코드를 첨부하였습니다. 원인을 확인하고싶습니다. 확인 부탁드립니다.

그리고 로그인만 사용하기때문에 문제 없었지만 KakaoOpenSDK.h 헤더를 포함시키면 Objective-C++에서 template가 C++의 예약어라 빌드오류가 뜹니다. 키워드 신경좀 써주시면좋겠습니다.

src.zip (1.9 KB)


1개의 좋아요

결국 자답이 되어버리는군요.

처음 백그라운드 스레드에서 application openUrl은 어디에서 발생하는지 모르겠지만 일단 동작은 하므로 넘어가야겠습니다.

앱을 생성하고난 후 플랫폼을 추가해야하던데 가이드에는 이러한 내용이 앱 생성 이미지 아래 글 한줄만 딱 있어 눈에 띄지 않은덕분에 몇시간을 날렸지만 뭐… 잘 되고있으니 다행입니다.

로그인 로그아웃도 첨부 된 코드에서는 헨들러가 호출되지않지만 제가 잘못 옮겨온 부분이라 아래처럼 uno 코드를 바꿔서 로그아웃 호출하면 isOpen이 NO로 반환되는것도 확인이 되었습니다.

		[[NSNotificationCenter defaultCenter]
			addObserverForName:(NSNotificationName)KOSessionDidChangeNotification
						object:nil
						 queue:[NSOperationQueue mainQueue]
					usingBlock:^void(NSNotification *notification) {
				NSLog(@"App is about to terminate, %@", [[KOSession sharedSession] isOpen] ? @"YES" : @"NO");
			}
		];

그래도 좀 이상한 부분은 한번 로그인이 된 이후로는 openWithCompletionHandler 메소드 호출하면 카톡이 호출되고 이후 동의, 취소 화면이 나타나지않고 바로 제 앱으로 넘어가 로그인이 되어버립니다. logoutAndCloseWithCompletionHandler 메소드를 호출하여 위 코드에서 NO가 출력되었어도 로그인을 누르면 카톡이 실행되고 동의, 동의 안함 화면이 나타나지않고 바로 로그인 처리가 됩니다. 이거… 정상인가요?

플랫폼에 따라서는 Objective-C++로 연동을 해야할 수 있을텐데 template라는 키워드 사용한 부분이라도 SDK에서 수정이 되었으면합니다.

@star
안녕하세요~ 키워드 부분은 기존에도 리포트된 곳이 있어서 다음버전에 수정되어 배포될 예정이구요
앱 연결이 이루어진 이후에는 동의창은 노출되지 않고 바로 인증코드가 발급되는게 정상 플로우입니다.
리포트 감사합니다.