iOS8에서는 문제가 없습니다.
iOS9에서
-canOpenURL: failed for URL: “kakao[API_KEY]://oauth”
- error: “This app is not allowed to query for scheme kakao[API_KEY]”
URL scheme for KakaoOpenSDK is not set properly in plist.
위와같은 오류가 나면서 로그인 페이지로 이동을 안하는데요.
개발가이드 대로 iOS9대응 다 했고요.
plist에 iOS9 대응으로
카카오관련 URL Schemes 추가했습니다.
LSApplicationQueriesSchemes > Application requires iPhone environment : NO 설정했고요.
Bitcode 도 NO로 설정다했습니다.
아래와 같이 설정 되었는지 궁금합니다.~
<key>LSApplicationQueriesSchemes</key>
<array>
<string>kakao0123456789abcdefghijklmn</string>
<string>kakaokompassauth</string>
<string>storykompassauth</string>
<string>kakaolink</string>
<string>kakaotalk-4.5.0</string>
<string>kakaostory-2.9.0</string>
</array>
이런… item3에는 kakao{해당앱키}를 사용해 주셔야 합니다. ㅜㅠ
예를들어 앱키가 aaabbbccc라면 kakaoaaabbbccc 같은 형식이 됩니다!
아… 그런가요…? 확인해보겠습니다…
근데 iOS8에서는 저부분 사용안해서 되는거 였군요…ㅠㅠ
감사합니다.
이건 다른 에러인데 1.0.42 버전에서 발생하였습니다.
(XCODE 7.0, Swift 2.0)
로그인 과정이 진행되지 않고있습니다.
KOSession.sharedSession().openWithCompletionHandler({(error:NSError!) → Void in
혹시 해결의 힌트를 얻을 수 있을까요?
(item0의 appID는 삭제 하고 올립니다.)
@dm_byun 정상 동작입니다.
해당 디바이스에 카카오톡과 카카오스토리가 설치되지 않아서 나오는 로그입니다.
https://devtalk.kakao.com/t/ios9/14632
FAQ에 있었네요!!!
앞으로는 먼저 상세히 살펴보고 질문을 올리도록 하겠습니다.
빠른 답변 감사합니다 ^^
몇가지 추가로 질문 더 드립니다.
기존에는 해당 디바이스에 카카오톡과 카카오 스토리가 설치 되지 않았을 경우 웹을 이용해 로그인을 수행했는데 위 시스템 에러 메세지 출력 후 더이상 진행 되지 않습니다.
IOS9은 아직 지원 되지 않는건가요?
지원 되지 않는다면 저 시스템 에러 메세지가 발생했을때 앱 내부에서 컨트롤 할 수 있는 방법이 있나요? openWithCompletionHandler의 Handler가 호출되지 않아 NSError정보도 넘어 오지 않습니다.
----IOS 개발가이드 로그인 부분 중—
- 카카오톡 앱이 설치되어 있고 카카오계정이 연결되어 있는 경우: 카카오톡의 카카오계정을 이용합니다.
- 카카오톡 앱이 설치되어 있으나 카카오계정 연결이 되어 있지 않은 경우: 사파리(Safari) 웹브라우저를 통해 카카오계정 연결을 수행하게 됩니다.
- 카카오톡 앱이 설치되어 있지 않은 경우: SDK의 내부 웹뷰를 통해 카카오계정 연결을 수행하게 됩니다.
저도 iOS9 에 앱 개발중인데 위와 같이 동일하게 설정되어있음에도 안되네요 ㅠㅠ… 뭐가 문제인지…
많이 바쁘시겠지만 도움 주시면 감사하겠습니다.
저도 카카오계정 로그인과 카카오링크 실행 시 앱이 깔려있지 않으면 오류 로그만 나오고 아무런 반응이 없네요.
앱스토어로 넘어가던지 해야 하는데…
또 카카오계정 로그인 시도 시 앱이 깔려 있어도
[[KOSession sharedSession] isOpen] 여기서 실패만 나오네요.
@dm_byun 더이상 진행이 안된다는게 어떤 이야기 이신가요?
저 위 에러는 톡과 스토리가 안깔려 있다라는 에러고… 직접입력해서 로그인 하는 플로우랑은 상관 없습니다.
로그인 웹뷰로 로그인 할 수 있지 않나요?
@irun0220 @wsky1101 에러로그나 스크린 캡쳐 등으로 원인 파악이 쉽게 도와주세요~
어떤 설정이 잘못 하신건지 감이 안오네요~
참고로 item0 = kakao 는 아니구요.
kakao+appkey 입니다. ex) kakaodd4e9cb75815cbdf7d87ed721a659baf
에러 출력 후 로그인 웹뷰 화면이 뜨지 않습니다.
(XCODE 7, Swift 2.0, IOS9 Simulator)
아래는 구현 중인 부분입니다.
KOSession.sharedSession().close() // 수행 함
//아래 openWithCompletionHandler 에서 위 시스템 에러 메세지 발생 후 웹뷰 이동하지 않음.
KOSession.sharedSession().openWithCompletionHandler({(error:NSError!) -> Void in
//진입하지 않음
if(KOSession.sharedSession().isOpen()) {
//로그인 성공
} else {
//로그인 실패
}
})
AppDelegate
func application(application: UIApplication,
openURL url: NSURL,
sourceApplication: String?,
annotation: AnyObject) -> Bool {
pinft("openURL \(url)") // 호출 되지 않음.
if KOSession.isKakaoAccountLoginCallback(url){
return KOSession.handleOpenURL(url)
}
}
웹뷰가 안뜨나요?
KOSession.sharedSession().presentingViewController 를 이용해 보세요.
카카오 샘플 스위프트 버전 참고…
2개의 좋아요
말씀해주신대로 Swift 샘플 보고 해보니 웹뷰가 뜹니다!!!
self.navigationController를 이용하는 부분이 추가 되었네요.
감사합니다!!
위에 올린 제 구현 방법에서의 수정은 아래와 같이 했습니다.
다른 분들도 참고하시길 바랍니다.
KOSession.sharedSession().close()
KOSession.sharedSession().presentingViewController = self.navigationController
KOSession.sharedSession().openWithCompletionHandler({(error:NSError!) -> Void in
KOSession.sharedSession().presentingViewController = nil
if(KOSession.sharedSession().isOpen()) {
//로그인 성공
} else {
//로그인 실패
}
})
1개의 좋아요
@dm_byun 잘 되신다니, 다행이에요~
행복한 한가위 되세요 ^^
1개의 좋아요
dm_byun 님과 완전히 동일한 증상입니다.
카카오 계정 로그인 시 카카오스토리가 설치되어 있지 않을 때 :
-canOpenURL: failed for URL: “storykompassauth://authorize” - error: “(null)”
카카오 계정 로그인 시 카카오톡이 설치되어 있지 않을 때 :
-canOpenURL: failed for URL: “kakaokompassauth://authorize” - error: “(null)”
카카오 계정 로그인 시 카카오스토리와 카카오톡이 설치 되어 있을 때 :
if ([[KOSession sharedSession] isOpen]) {
실패;;
}
카카오 링크 사용 시 카카오톡이 설치되어 있지 않을 때 :
-canOpenURL: failed for URL: “kakaolink://send” - error: “(null)”
Info.plist 는 위에 적어주신 것과 완전히 동일하게 설정했습니다.
물론 “kakao”+appkey 로요.
SDK는 1.0.42 입니다.
샘플을 보니 obj-c 쪽도 추가 되어있네요
한번 확인해보세요 ^^
KOSession *session = [KOSession sharedSession];
if (session.isOpen) {
[session close];
}
session.presentingViewController = self.navigationController; <---- 중요
[session openWithCompletionHandler:^(NSError *error) {
session.presentingViewController = nil; <--- 중요
if (!session.isOpen) {
[[[UIAlertView alloc] initWithTitle:@"에러" message:error.description delegate:nil cancelButtonTitle:@"확인" otherButtonTitles:nil, nil] show];
}
}];
-canOpenURL: failed for URL: “kakaolink://send” - error: “(null)”
이 에러는 ios9 에서 추가되어서, 스킴을 열수 있는 앱이 없으면 로그에 찍고 있습니다.
정상 동작이니 너무 놀래지 마세요~
if ([[KOSession sharedSession] isOpen]) {
실패;;
}
false 인건가요? 아님 앱이 죽나요?
단순히 로그인웹뷰가 안보이는 거면, dm_byun 님이 적어주신걸로 해결 가능할것 같습니다.
isOpen() == false {
session open 하시면 됩니다.
}