Skip to content
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

카카오 싱크를 진행 후 카카오 동의한 약관 확인하기 기능을 추가 해야 할 것 같습니다. #352

Open
Kwon-Bum-Kyu opened this issue Nov 24, 2022 · 0 comments

Comments

@Kwon-Bum-Kyu
Copy link

Kwon-Bum-Kyu commented Nov 24, 2022

Version of kakao-login libraries

v5.2.4

Version of react-native

v0.70.5

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

둘다 해당합니다.

Expected behavior
카카오 동의한 약관 확인하기 해당 사항을 이용한 카카오 싱크 적용하여 동의 화면 띄웠을때 채널 가입 가능한 아래 선택 동의 항목을 받아올 수 없는 문제 해결

Actual behavior
해당 사항을 해결하기 위해서

  • Android

RNKakaoLoginsModule.kt

    @ReactMethod
    private fun getServiceTerms(promise: Promise) {
        // 동의한 약관 확인하기
        UserApiClient.instance.serviceTerms { userServiceTerms, error ->
            if (error != null) {
                promise.reject("RNKakaoLogins", error.message, error)
                return@serviceTerms
            }
            else if (userServiceTerms != null) {
                val map = Arguments.createMap()
                val list: List<ServiceTerms>? = userServiceTerms.allowedServiceTerms
                val jsonObject = JSONObject()
                val allowedServiceTerms: ArrayList<String> = ArrayList()
                if (list != null) {
                    for (item in list!!) {
                        Log.d("allowedServiceTerms", item.tag);
                        Log.d("allowedServiceTerms", item.agreedAt.toString());
                        jsonObject.put("tag", item.tag);
                        jsonObject.put("agreedAt", item.agreedAt.toString());
                        allowedServiceTerms.add(jsonObject.toString())
                    }
                    Log.d("allowedServiceTerms", allowedServiceTerms.toString());
                }else {
                    promise.reject("RNKakaoLogins", "serviceTerms is null")
                }
                map.putString("user_id", userServiceTerms.userId.toString());
                map.putString("allowedServiceTerms", allowedServiceTerms.toString());
                promise.resolve(map)
                return@serviceTerms
            }
            promise.reject("RNKakaoLogins", "serviceTerms is null")
        }
    }
  • iOS

RNKakaoLogins.swift

   @objc(getServiceTerms:rejecter:)
    func getServiceTerms(_ resolve: @escaping RCTPromiseResolveBlock,
                         rejecter reject: @escaping RCTPromiseRejectBlock) -> Void {
        DispatchQueue.main.async {
            let encoder = JSONEncoder()
            UserApi.shared.serviceTerms {(serviceTerms, error) in
                if let error = error {
                    reject("RNKakaoLogins", error.localizedDescription, nil)
                }
                else {
                    print("serviceTerms() success.")
                    let jsonData = try? encoder.encode(serviceTerms?.allowedServiceTerms)
                    if let jsonData = jsonData, let allowedServiceTerms = String(data: jsonData, encoding: .utf8){
                        
                        print("allowedServiceTerms",allowedServiceTerms)
                        resolve([
                            "userId" : serviceTerms?.userId ?? "",
                            "allowedServiceTerms" : allowedServiceTerms
                        ])
                        
                    }else {
                        reject("RNKakaoLogins", "serviceTerms() failed.", nil)
                    }
                }
            }
        }
    }

위의 사항 처럼 모듈을 커스텀 해서 활용하고 있습니다. 해당 부분이 추가가 된다면 좀 더 수월하게 사용할 수 있을것 같습니다.

Tested environment (Emulator? Real Device?)

@Kwon-Bum-Kyu Kwon-Bum-Kyu changed the title 카카오 싱크를 진행 후 카카오 동의한 약관 확인하기 기능을 추가해야합니다. 카카오 싱크를 진행 후 카카오 동의한 약관 확인하기 기능을 추가해야할것 같습니다. Nov 24, 2022
@Kwon-Bum-Kyu Kwon-Bum-Kyu changed the title 카카오 싱크를 진행 후 카카오 동의한 약관 확인하기 기능을 추가해야할것 같습니다. 카카오 싱크를 진행 후 카카오 동의한 약관 확인하기 기능을 추가 해야 할 것 같습니다. Nov 24, 2022
hyochan pushed a commit that referenced this issue Apr 23, 2024
## 배경
[카카오
싱크](https://developers.kakao.com/docs/latest/ko/kakaosync/common#intro)를
이용하면 카카오 뿐만 아니라 서비스 약관 동의까지 한 번에 동의받을 수 있는 간편 가입 기능을 이용할 수 있습니다. 그리고
사용자가 동의한 서비스 약관에 대한 정보가 필요한 경우가 있기에 사용자가 동의한 서비스 약관을 조회할 수 있는 기능을 제공합니다.

## 관련 이슈
- #352
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant