crossplatformkorea / react-native-kakao-login

react-native native module for Kakao sign in.
MIT License
350 stars 133 forks source link

카카오톡이 설치된 IOS 기기에서 로그인 할 경우 카카오톡으로 넘어간 다음 아무런 응답이 오질 않습니다. #231

Open halfelf11 opened 3 years ago

halfelf11 commented 3 years ago

Version of kakao-login libraries

3.3.2

Version of react-native

0.63.4

Platforms you faced the error (IOS or Android or both?)

IOS

Expected behavior

카카오톡이 설치된 IOS 기기에서 로그인

Actual behavior

카카오톡이 설치된 IOS 기기에서 로그인 할 경우 카카오톡으로 넘어간 다음 아무런 응답이 오질 않습니다. 설치되지 않은 기기에서는 정상적으로 웹페이지가 열리고 로그인하면 정상 로그인이됩니다. 안드로이드 기기에서도 정상적으로 로그인이 되고 있습니다.

info.plist 의 화이트 리스트도 정상적으로 들어가 있습니다. (한글로 적은 부분은 보안상 수정하여 적은 부부입니다.)

LSApplicationQueriesSchemes storylink kakaostory-2.9.0 kakaokompassauth storykompassauth naversearchapp naversearchthirdlogin kakaokompathauth kakao인증키값 kakakolink kakaotalk-4.5.0

xcode 디버깅에는 아래와 같이 로그가 찍히고 있습니다. (한글로 적은 부분은 보안상 수정하여 적은 부부입니다.)

2021-05-18 09:32:57655 [💬][AuthController.swift 323:21] -> code_verifier: j8bh3yjeTWcI+msEzNvDew1Ko0nZkfp3vtMFbJMLziNgchIguY4bECOLi7LhzgYvHD/pgIPsa7gbOY3GNjF96w 2021-05-18 09:32:57656 [💬][AuthController.swift 326:25] -> code_challenge: 2PfGEuJWhKRtHfQaYcrpyrvnzbrT4tQC1SX9stBEcNc 2021-05-18 09:32:57698 [💬][AuthController.swift 99:25] -> 카카오톡 실행: kakaokompassauth://authorize?redirect_uri=kakao인증키값://oauth&headers=%7B%22KA%22:%22sdk%5C/2.4.1%20sdk_type%5C/swift%20os%5C/ios-14.5.1%20lang%5C/ko-KR%20res%5C/390x844%20device%5C/iPhone%20origin%5C/번들아이디%20app_ver%5C/0.16.27%22%7D&client_id=클라이언트아이디&params=%7B%22code_challenge%22:%222PfGEuJWhKRtHfQaYcrpyrvnzbrT4tQC1SX9stBEcNc%22,%22code_challenge_method%22:%22S256%22%7D&response_type=code

앱에서는 아래와 같은 코드로 사용하고 있으며, 실행시 로그는 "kakaoSdkAuthTest ::::: service login start" 까지만 찍히고 에러로그도 찍히지 않습니다.

try{ console.log('kakaoSdkAuthTest ::::: service login start'); const token: KakaoOAuthToken = await login(); console.log('kakaoSdkAuthTest ::::: service login token',token); } catch(e) { console.log(e); }

Tested environment (Emulator? Real Device?)

System: OS: macOS 11.2.1 CPU: (12) x64 Intel(R) Core(TM) i7-8750H CPU @ 2.20GHz Memory: 98.54 MB / 16.00 GB Shell: 3.2.57 - /bin/bash Binaries: Node: 10.23.1 - ~/.nvm/versions/node/v10.23.1/bin/node Yarn: 1.22.10 - /usr/local/bin/yarn npm: 6.14.10 - ~/.nvm/versions/node/v10.23.1/bin/npm Watchman: 4.9.0 - /usr/local/bin/watchman Managers: CocoaPods: 1.10.1 - /usr/local/bin/pod SDKs: iOS SDK: Platforms: iOS 14.5, DriverKit 20.4, macOS 11.3, tvOS 14.5, watchOS 7.4 Android SDK: API Levels: 23, 27, 28, 29, 30 Build Tools: 28.0.3, 29.0.2, 29.0.3, 30.0.3 System Images: android-29 | Google Play Intel x86 Atom, android-30 | Google APIs Intel x86 Atom Android NDK: Not Found IDEs: Android Studio: 4.1 AI-201.8743.12.41.7042882 Xcode: 12.5/12E262 - /usr/bin/xcodebuild Languages: Java: 1.8.0_282 - /usr/bin/javac Python: 2.7.16 - /usr/bin/python npmPackages: @react-native-community/cli: Not Found react: 16.13.1 => 16.13.1 react-native: 0.63.3 => 0.63.3 react-native-macos: Not Found npmGlobalPackages: react-native: Not Found

halfelf11 commented 3 years ago

xcode 디버깅 내역 추가 된 부분이 있어서 남깁니다. 백그라운드 세션이 무효되면서 로그인 정보를 못 받는 것 같습니다.

2021-05-18 16:49:37.363787+0900 tokmomRN[3258:1365679] BackgroundSession connection to background transfer daemon interrupted 2021-05-18 16:49:37.369190+0900 tokmomRN[3258:1365152] BackgroundSession connection to background transfer daemon interrupted 2021-05-18 16:49:37.371524+0900 tokmomRN[3258:1365550] BackgroundSession <148CEAFA-08D4-49DF-9249-5F6DBCD1C196> connection to background transfer daemon interrupted 2021-05-18 16:49:37.384022+0900 tokmomRN[3258:1365051] BackgroundSession connection to background transfer daemon invalidated 2021-05-18 16:49:37.384108+0900 tokmomRN[3258:1365051] BackgroundSession <148CEAFA-08D4-49DF-9249-5F6DBCD1C196> connection to background transfer daemon invalidated 2021-05-18 16:49:37.384153+0900 tokmomRN[3258:1365051] BackgroundSession connection to background transfer daemon invalidated 2021-05-18 16:49:37.385779+0900 tokmomRN[3258:1365498] [connection] nw_read_request_report [C11] Receive failed with error "Software caused connection abort" 2021-05-18 16:49:39.391795+0900 tokmomRN[3258:1365052] dnssd_clientstub write_all(22) DEFUNCT 2021-05-18 16:49:39.391940+0900 tokmomRN[3258:1365052] dnssd_clientstub deliver_request ERROR: write_all(22, 50 bytes) failed 2021-05-18 16:49:39.392262+0900 tokmomRN[3258:1365052] dnssd_clientstub write_all(22) DEFUNCT

halfelf11 commented 3 years ago

아직 이 증상이 계속 되고 있습니다. 확인 가능하신분 없으신가요?

HoJin9622 commented 3 years ago

Screen Shot 2021-05-24 at 2 24 40 PM

<string>kakao0123456789</string> 이 부분 추가하니 전 정상작동합니다!

halfelf11 commented 3 years ago

@HoJin9622 님 답변 감사합니다. 하지만 아직 동작하지 않습니다. kakao네이티브키 역시 LSApplicationQueriesSchemes에 추가한 상태입니다. 혹시 다른 해결방법은 없을까요.

HoJin9622 commented 3 years ago

Screen Shot 2021-05-26 at 4 18 22 PM 이 부분 한번 확인해보시겠어요? 저도 IOS 부분 같은 상황이어서 수정했던 부분이 위에 첫 답변과 URL Schemes에 콤마 또는 스페이스가 들어가있어서 이렇게 두개 수정을하니 정상 작동이 되었습니다.

halfelf11 commented 3 years ago

@HoJin9622 님 거듭 감사드립니다. 해당부분도 다시 확인했는데 정상적으로 잘 들어가 있습니다. 혹시 naver-login과 같이 쓰는 것에서 발생할수도 있는 문제 일까요?

HoJin9622 commented 3 years ago

Screen Shot 2021-05-31 at 9 56 35 AM 저도 현재 네이버 로그인과 함께 사용중이고 AppDelegate.m 부분은 이렇게 작상하였고 문제없이 작동중입니다. 위 부분이 다 맞다면 어디가 잘못되었는지 짐작가는부분이 없네요 ㅠㅠ

halfelf11 commented 3 years ago

@HoJin9622 항상 답변 감사드립니다. 아직 해결하지 못했지만 해결되면 저도 해결한 방법 올리도록하겠습니다. 감사합니다.

HoJin9622 commented 3 years ago

IOS 카카오톡에서 앱이 시작할때 FaceID가 적용되어있으면 카카오톡으로 진입 후 아무 반응이 없고 다시 앱으로 돌아간 후 카카오톡 로그인 버튼을 누르면 정상 작동됩니다.(카카오톡이 이미 백그라운드로 켜진 상태에서 정상 작동하는 느낌) 그리고 FaceID로 보안 설정을 하지않은 카카오톡에서는 카카오톡이 이미 켜져있지 않더라도 바로 카카오 로그인 모달이 뜨는 것 같습니다.

min0623 commented 2 years ago

@HoJin9622 안녕하세요. 저도 같은 현상을 겪고 있어 질문드립니다. 다만 저는 위에 올려주신 것과 같이 RNKakakoLogins를 쓰려고 하면 존재하지 않는 identifier라고 하면서 빌드가 안되는데 혹시 어떻게 import 하셨는지 알 수 있을까요? #193 에 있는 것처럼 #import <RNKakaoLogins.h> 를 했는데도 잘 안되네요. 스크린샷 2021-09-10 오후 3 15 31

HoJin9622 commented 2 years ago

@min0623 Screen Shot 2021-09-10 at 3 19 37 PM

위 이미지처럼 #ifdef FB_SONARKIT_ENABLED 이 부분 위에 #import <RNKakaoLogins.h>를 선언해보시겠어요?

min0623 commented 2 years ago

@HoJin9622 헛 이렇게 하니 너무 잘되네요!! 감사합니다😄

taekeunn commented 2 years ago

@halfelf11 혹시 이 문제 해결되셨나요? 저도 같은 문제를 겪고있어서요.. 혹시 해결되셨다면 공유좀 부탁드리겠습니다!

sairion commented 2 years ago

Use of undeclared identifier 'RNKakaoLogins' 문제가 (이슈 색인을 위해 남깁니다.) 저도 발생하고 있었는데,

ifdef 문 안에 별생각없이 추가했었군요. ㅠㅠ

@HoJin9622 님 감사합니다. ^^

hoyoungmoon commented 2 years ago

혹시 해당 이슈 해결하신분 있으실까요? 위와 똑같은 문제가 발생하고 저는 simulator에서는 정상작동하며 카카오톡이 설치된 디바이스에서 테스트시 문제가 발생하네요..

현재 저는 Info.plist의 LSApplicationQueriesSchemes 설정하는 부분에 kompassauth 2개를 주석처리 후 사용중입니다. 이렇게 하면 카카오톡으로 자동 로그인 되지 않고 링크를 타게 되네요

<key>LSApplicationQueriesSchemes</key> 
<array>
  <!-- <string>kakaokompassauth</string>
  <string>storykompassauth</string> -->
</array>
jaquan-paik commented 1 year ago

같은 이슈가 있었고 지금은 해결했습니다.

제가 한 실수는 링크 여기서 제안한 해결책 대로 진행했었는데

  1. Implementation에서 AppDelegate에서

    - (BOOL)application:(UIApplication *)app
     openURL:(NSURL *)url
     options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options {
    if([RNKakaoLogins isKakaoTalkLoginUrl:url]) {
    return [RNKakaoLogins handleOpenUrl: url];
    }
    
    return NO;
    }

    이부분 삽입을 #if RCT_NEW_ARCH_ENABLED ... #endif 안에 넣어서 생긴 문제 였습니다.

다른 #if 문 안에 들어간게 아닌지 확인해보세요.

sean2929 commented 1 year ago

감사합니다~ 덕분에 해결했네요.

if RCT_NEW_ARCH_ENABLED 구문이 여러군데 있었는데 저는 @implementation AppDelegate 구문 바로 다음줄에 코드를 넣으니 잘 작동하네요

@implementation AppDelegate

- (BOOL)application:(UIApplication *)app
   openURL:(NSURL *)url
   options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options {
   if ([RNKakaoLogins isKakaoTalkLoginUrl:url]) {
      return [RNKakaoLogins handleOpenUrl: url];
   }
   return NO;
}