crossplatformkorea / react-native-kakao-login

react-native native module for Kakao sign in.
MIT License
364 stars 137 forks source link

Deep Link does not contain valid required params. URL params #193

Closed Wanderlust-sol closed 3 years ago

Wanderlust-sol commented 3 years ago

Version of kakao-login libraries

v3.0.1

Version of react-native

v0.63.3

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

ios

Expected behavior

로그인 성공후 getProfile로 이메일을 가져오는 작업

Actual behavior

v2 버전에서 잘 작동중이던 카카오 로그인이 업데이트 이후

Deep Link does not contain valid required params. URL params: {
    code = "X3hEHzTdKnsQ4P2s4q3gAE-GajdQ6tuITzcoN8xSZlkn8obxWIEJQyA2ZnsUDgDxgoDpVwo9dZwAAAF4XiFiMg";
}

이와 같이 쓰여져 있고 로그인이 되지 않습니다.

const onPressKakao = async (): Promise<void> => {
    const token = await login();
    console.log('token', token); // 안찍힘.. login부터 작동이 안되는걸로 추정됩니다.
    const profile: KakaoProfile = await getKakaoProfile();
    console.log(profile);
  };

Tested environment (Emulator? Real Device?)

iphone XS. (v14.4.1)

hyochan commented 3 years ago

영상에서 제공 드린 것처럼 혹시 작업 하셨나요? 빠진 부분은 없으신지요?

Wanderlust-sol commented 3 years ago

@hyochan 네네 그대로 작업했었습니다.

hyochan commented 3 years ago

이슈 리포트 감사합니다. 수정 사항은 3.0.2 에 반영 되었습니다. 계속 문제가 발생하면 이슈보드를 새로 생성해주세요 🙏

추가된 README를 참조하여 완성해주세요.

  1. Import

    #import <RNKakaoLogins.h>
  2. Implementation

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

ad-hoc

가끔 백그라운드에서 실행했을 때 튕길 수 있습니다. 그럴경우 아래와 같이 시도해주세요.

  dispatch_async(dispatch_get_global_queue( DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^(void){
      dispatch_async(dispatch_get_main_queue(), ^(void){
        if ([RNKakaoLogins isKakaoTalkLoginUrl:url]) {
          [RNKakaoLogins handleOpenUrl: url];
        }
      });
  });
juzero commented 1 year ago

FBSDKApplicationDelegate나 RCTLinkingManager가 RNKakaoLogins보다 위에 있으면 작동하지 않는 듯 합니다. RNKakaoLogins를 제일 위로 올리면 작동하네요.

- (BOOL)application:(UIApplication *)application
            openURL:(NSURL *)url
            options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options
{
 dispatch_async(dispatch_get_global_queue( DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^(void){
      dispatch_async(dispatch_get_main_queue(), ^(void){
        if ([RNKakaoLogins isKakaoTalkLoginUrl:url]) {
          [RNKakaoLogins handleOpenUrl: url];
        }
      });
  });

  if ([[FBSDKApplicationDelegate sharedInstance] application:application openURL:url options:options]) {
    return YES;
  }

  if ([RCTLinkingManager application:application openURL:url options:options]) {
    return YES;
  }

  return NO;
}