안녕하세요 현재 플러터 kakao_flutter_sdk로 카카오 로그인을 구현하고 있습니다.
앱이 설치되지 않은 경우엔 카카오 링크를 통해 로그인이 잘 되는데 앱이 설치되어 있는 경우에
카톡앱이 켜지기는 하는데 정상적이라면 동의 화면이 뜨고 확인을 해야 다시 개발중인 앱으로 돌아와야 하는데
지금은 카톡앱 갔다가 아무것도 없이 바로 다시 개발중인 앱으로 돌아옵니다…
현재 네이버 로그인도 같이 사용중이라 AppDelegate에
override func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) → Bool {
return NaverThirdPartyLoginConnection.getSharedInstance().application(app, open: url, options: options)
}
를 추가했는데, 이때문이라는 레퍼런스도 봐서 해결이라고 올라온 걸로 바꿔도 여전합니다 ㅠ 물론 저부분을 지워도 똑같구요 …
info.plist에 추가해야 하는 부분들은 다 추가한 상태입니다.
앱 ID는 710905입니다.
답변 부탁드립니다 ㅠㅠ
안녕하세요
서버 로그를 확인했을 때는 토큰이 정상적으로 발급되고 있네요
네이버 로그인에 대한 얘기를 해주셔서 혹시 아래의 내용들을 읽으셨던건가요?
opened 02:00AM - 10 Jun 21 UTC
closed 05:28AM - 10 Jun 21 UTC
제목대로 iOS에서 카카오톡이 깔려있을 때 requestWithTalk()를 호출하면 카카오톡이 실행되고 다시 앱으로 돌아오는데 그 이후의 결과… 를 반환하지 않습니다. String값을 반환하지 않고 에러또한 발생하지 않아서 어떤게 문제인지 모르겠습니다.
flutter 1.22.6,
kakao_flutter_sdk 0.5.4
opened 05:37AM - 28 Apr 20 UTC
closed 10:57AM - 30 Jul 20 UTC
no-issue-activity
_loginWithTalk() async{
print('카톡 깔려있음.');
try {
var authCode =… await AuthCodeClient.instance.requestWithTalk();
print('토큰 가져옴? $authCode');
} on KakaoAuthException catch (e) {
print('에러1 ? $e');
} on KakaoClientException catch (e) {
print('에러2 ? $e');
} catch (e) {
print('에러3 ? $e');
}
}
---------------------------------------------------------------------
xcode에서 디버그 해보니 이런 log가 나옵니다.
2020-04-28 14:10:41.199329+0900 pickling[961:213299] flutter: 카톡 깔려있음.
2020-04-28 14:10:46.153942+0900 pickling[961:213632] 6.23.0 - [Firebase/Analytics][I-ACS023001] Deep Link does not contain valid required params. URL params: {
code = "DaBiLClhJsUuADyGUhSiTZDFyvwHr4JMPRoDmwM4Dj5E0-oiL8MLAtfIj7_uGjT7yJs2NQo9dZwAAAFxvzHUPg";
}
xcode - 11version, ios 13.4 버전입니다.
저희 앱에서 카카오톡앱으로 진입후, 페이스 아이디까지 인증 후 다시 저희 앱으로 돌아오는데 값은 같이 돌아오지 않는 현상이 발생합니다.
웹으로 했을때는 잘됩니다.
확인부탁드립니다. 그리고 좋은 라이브러리 만들어주셔서 감사합니다 ^^
네 맞습니다.
토큰이 잘 발급되고 있군요 …ㅜ
근데 로그 찍히는 것도 없고 카톡을 갔다가 1초만에 다시 앱으로 슝 오네요 ㅠㅠ
다시 한 번 말씀드리지만 앱 설치 안 된 경우 카카오링크를 통해서는 아주 잘 옵니다 토큰도 잘 받아지구요 !
혹시 앱 설치라는 것은 카카오톡 앱을 의미하고, 카카오링크라고 말씀하신 내용은 '카카오 계정으로 로그인’을 말씀하시는 건가요?
카카오링크 기능은 로그인과는 별개의 기능이라서, 카카오링크를 통해 로그인한다는 내용이 잘 이해가 안가네요ㅠㅠ
추가로 info.plist 설정 내용 첨부 부탁드려요 (앱 키는 가려서 올려주세요)
넵 앱 설치는 AuthCodeClient.instance.requestWithTalk();을 말씀드리는 것이고
카카오 링크는 AuthCodeClient.instance.request();을 말씀드리는 것입니다 !!
AppDelegate.swift 파일도 첨부가 가능하실까요?
import UIKit
import Flutter
import NaverThirdPartyLogin
@UIApplicationMain
@objc class AppDelegate: FlutterAppDelegate {
override func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool {
return NaverThirdPartyLoginConnection.getSharedInstance().application(app, open: url, options: options)
}
override func application(
_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
) -> Bool {
GeneratedPluginRegistrant.register(with: self)
return super.application(application, didFinishLaunchingWithOptions: launchOptions)
}
}
전문입니다!
override func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool {
return NaverThirdPartyLoginConnection.getSharedInstance().application(app, open: url, options: options)
}
위의 코드로 인해 카카오톡 로그인에 사용되는 Url이 네이버 로그인에서 처리되고 있는 것으로 보입니다. AppDelegate.swift 파일을 아래와 같이 수정 후 다시 확인 부탁드려요
import UIKit
import Flutter
import NaverThirdPartyLogin
@UIApplicationMain
@objc class AppDelegate: FlutterAppDelegate {
override func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool {
var result = false
if url.absoluteString.hasPrefix("kakao") {
result = super.application(app, open: url, options: options)
}
if !result {
result = NaverThirdPartyLoginConnection.getSharedInstance()?.application(app, open: url, options: options)
}
return result
}
override func application(
_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
) -> Bool {
GeneratedPluginRegistrant.register(with: self)
return super.application(application, didFinishLaunchingWithOptions: launchOptions)
}
}