-
Notifications
You must be signed in to change notification settings - Fork 149
Open
Description
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?)
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels