New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
ios에서 카카오톡 앱으로 로그인 후 반응이 없습니다. #25
Comments
확인해보니 이 코드를 사용하는 네이버 서드파티라이브러리때문에 생긴 문제였습니다. 네이버 서드 파티 라이브러리를 사용하기 위해서는 위의 코드가 필요하고, 카카오 로그인에서는 저 코드가 있으면 응답값이 오지 않습니다. 이런 경우에는 따로 if else문으로 분기를 태울 수 있을까요? |
보통 이런 경우 url 값 자체가 특정 포맷을 가지고 있기 때문에 직접 값을 체크할 수 있을 것 같아요. 카카오 로그인의 경우 redirect uri 의 값이 |
그렇다면 redirect uri 를 어느 부분에서 잡는것이 좋을까요? 네이버나 카카오 버튼을 눌렀을때 shared_preferences에 값을 넣고 AppDelegate.swift에서 값을 꺼내서 위에 기술한 코드를 if else 문으로 감싸서 분기를 태워도 될까요? |
네 그렇게 하셔도 될 것 같아요. Shared_preferences 를 이용하는 방식 말고 global variable을 사용하는 방법도 있구요! 제가 제안드린 방식은 별도의 상태를 저장할 필요 없이 저 함수 내에서 argument로 들어온 url 값 자체를 비교하는 방식입니다. 현재 네이버 SDK의 url 을 핸들하는 delegate에서 kakao 로 시작하는 url 이 들어오면 return false 를 하시면, kakao_fluttersdk 에서 등록한 delegate에서 자동으로 처리를 해주지 않을까 싶어요. 요 이슈 혹시 해결하셨나요? |
Stale issue message |
늦은 답변 죄송합니다ㅠㅠ |
혹시라도 위 설정 방법을 궁금해하시는 분이 계실까 남깁니다.
import UIKit
import Flutter
import KakaoSDKAuth
import KakaoSDKCommon
@UIApplicationMain
@objc class AppDelegate: FlutterAppDelegate {
override func application(
_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
) -> Bool {
GeneratedPluginRegistrant.register(with: self)
if let appKey = Bundle.main.object(forInfoDictionaryKey: "KAKAO_API_KEY") as? String {
KakaoSDKCommon.initSDK(appKey: appKey)
}
return super.application(application, didFinishLaunchingWithOptions: launchOptions)
}
override func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool {
var result = false
if AuthApi.isKakaoTalkLoginUrl(url) {
result = super.application(app, open: url, options: options)
}
if !result {
// 네이버 로그인, 페이스북 로그인, uni link 등등 처리
}
return result
}
} |
@cyc2303 혹시 이부분 관련해서 도움을 좀 주실수있나요?? |
@jpoh281 꽤 돼서 기억이 잘 안나는데, 주석 부분에 result = NaverThirdPartyLoginConnection.getSharedInstance().application(app, open: url, options: options) 이런식으로 처리해주시면 됩니다. |
@cyc2303 이렇게 사용하니 카카오 앱으로 로그인하는경우 동의하고 돌아오는 와중에 종료되어 버립니다. |
@jpoh281 코드 전체를 보여주세요 |
네이버 관련 부분을 지웠을 때는 잘 동작하나요? |
예 네이버부분 뿐만아니라 카카오 관련된 부분들 모두 빼면 카카오는 정상작동합니다. 네이버는 로그인 못하구요 |
저는
|
@cyc2303 11월에는 플러터를 시작한지 얼마 안되서 제대로 못했는데
이렇게 작성하니까 잘 작동하네요. |
_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');
}
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 버전입니다.
저희 앱에서 카카오톡앱으로 진입후, 페이스 아이디까지 인증 후 다시 저희 앱으로 돌아오는데 값은 같이 돌아오지 않는 현상이 발생합니다.
웹으로 했을때는 잘됩니다.
확인부탁드립니다. 그리고 좋은 라이브러리 만들어주셔서 감사합니다 ^^
The text was updated successfully, but these errors were encountered: