actbase / react-kakaosdk

KakaoSDK Bridge for React, React-Native, RNW
MIT License
20 stars 8 forks source link

ios에서 kakaologin이 되지 않습니다. #11

Closed Kwon-Bum-Kyu closed 2 years ago

Kwon-Bum-Kyu commented 2 years ago

[발생] ios에서 로그인시에 카카오톡 실행후 다시 앱으로 전환하나 토큰을 반환하지 않습니다.

[환경] xcode 13.1 react": "17.0.2", react-native": "0.66.0", kakaosdk version : 2.6.0

[info.plist] kakao{kakaoKey} kakaokompassauth kakaolink kakaotalk-5.9.7 kakaonavi-sdk

[실행코드] await KakaoSDK.init(kakaoKey) const tokens = await KakaoSDK.login() .then((result) => { console.log(Login Finished:${JSON.stringify(result)}); resolve(true) }).catch((error) => { console.log(Login Cancelled:${error}); resolve(false) }); console.log('tokens',tokens); [xcode log] 2021-11-22 04:44:02962 [💬][AuthController.swift 99:25] -> 카카오톡 실행: kakaokompassauth://authorize?params=%7B%22code_challenge_method%22:%22S256%22,%22code_challenge%22:%224yXUp5rK1qxFPwEzLKsjOzwC9BvXSwVoOoZ2fLkbueM%22%7D&client_id={kakaoKey}&redirect_uri=kakao{kakaoKey}://oauth&headers=%7B%22KA%22:%22sdk%5C/2.5.6%20sdk_type%5C/swift%20os%5C/ios-15.1%20lang%5C/ko-KR%20res%5C/390x844%20device%5C/iPhone%20origin%5C/앱번들%20app_ver%5C/1.0%22%7D&response_type=code

https://github.com/actbase/react-kakaosdk/issues/4 해당 링크를 참조하여 진행을 해보았지만 똑같은 현상이 발생합니다.

ChanghyeonYoon commented 2 years ago

iOS

공식문서 - 개발 프로젝트 설정 을 참고하여 info.plist 의 아래NATIVE_APP_KEY 문구를 잘 확인하시여 본인의 Kakao App Key로 변경해주세요.

+ <key>KAKAO_APP_KEY</key>
+ <string>{NATIVE_APP_KEY}</string>

AppDelegate.m (++ 된 부분 추가)

#import "WithKakaoSDK.h"

- (BOOL)application:(UIApplication *)app
openURL:(NSURL *)url
options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options
{
...

++ if ([WithKakaoSDK isKakaoTalkLoginUrl:url]) return [WithKakaoSDK handleOpenUrl:url];
[[FBSDKApplicationDelegate sharedInstance] application:app
openURL:url
options:options];

...

return NO;
}

위 내용을 추가하셨는지 확인 부탁드립니다.

Kwon-Bum-Kyu commented 2 years ago

해당 KAKAO_APP_KEY 부분은 추가를 하였고 AppDelegate.m은 모듈을 설치하고 나니

ChanghyeonYoon commented 2 years ago

첨부해주신 코드를 보니 async await를 사용하신 것 같은데 then으로 다시 처리한 이유가 있으실까요? 앱으로 돌아왔다면 모듈은 정상적으로 작동한 것으로 보입니다.

await KakaoSDK.init(kakaoKey)
const tokens = await KakaoSDK.login()
.then((result) => {
console.log(Login Finished:${JSON.stringify(result)});
resolve(true)
}).catch((error) => {
console.log(Login Cancelled:${error});
resolve(false)

해당 코드를

try {
  await KakaoSDK.init()
  const tokens = await KakaoSDK.login().
  console.log(tokens)
} catch (e) {
console.warn(e)
}

로 확인 부탁드립니다.

Kwon-Bum-Kyu commented 2 years ago

then으로 처리 했던 부분은 코드를 테스트하기 위해서 예제를 복붙해서 나왔고. 해당 저 부분에 오타가 있었던거 같습니다. 앱으로 전환이 되지 않으며 현재 보내주신 코드를 변경하여 적용해보아도 똑같은 현상이 발생합니다.

ChanghyeonYoon commented 2 years ago

카카오 로그인 창은 뜨나요??

Kwon-Bum-Kyu commented 2 years ago

네 해당 창은 뜨고 URL Types에서 URL Schemaes의 키 값에 오타를 수정을 했더니 오류가 해결되었네요 감사합니다.