문의 시, 사용하시는 개발환경과 디벨로퍼스 앱ID를 알려주세요.
___ID 1103689
안녕하세요,
현재 운영중인 서비스에 간편가입 기능으로 카카오 로그인 시점에 마케팅약관 동의를 선택적으로 받고 있습니다.
서비스 약관 동의내역 확인하기 API를 사용해 마케팅약관 동의여부를 가져오고, 이를 약관테이블에 저장하고 있는데요.
마케팅약관의 동의내역만 확인하기 위해서 API 요청 시, 쿼리 파라미터에 마케팅약관 tag를 지정해둔 상태입니다.
그런데 해당 API 응답의 상태코드는 200이지만 현재 몇몇 유저의 경우 해당 API의 응답에서 scopes가 null로 반환되고 있습니다.
tag를 명시적으로 지정해둔 상태이기 때문에 scopes는 null이 될 가능성이 없고, scopes의 agreed 여부만 boolean 값으로 확인하면 된다고 생각했는데요… scopes가 null로 돌아오는 경우가 어떤게 있을지 여쭤보고싶습니다.
public ServiceTermsAgreement getAgreementStatus(Long kakaoId) {
String authorizationHeader = "Authorization";
String kakaoAuthPrefix = "KakaoAK ";
String targetIdType = "user_id";
return kakaoApiWebClient.get()
.uri(uriBuilder -> uriBuilder
.path("v2/user/service_terms")
.queryParam("target_id_type", targetIdType)
.queryParam("target_id", kakaoId)
.queryParam("tags", termsOfMarketingTag)
.build()
)
.header(authorizationHeader, kakaoAuthPrefix + adminKey)
.retrieve()
.bodyToMono(ServiceTermsAgreement.class)
.block();
}
private void saveAgreements(Member member, ServiceTermsAgreement serviceTermsAgreement) {
MemberTermAgreement memberTermAgreement = MemberTermAgreement.builder()
.member(member)
.marketingAgreement(serviceTermsAgreement.getMarketingServiceTermsAgreement())
.build();
memberTermAgreementRepository.save(memberTermAgreement);
}
public Boolean getMarketingServiceTermsAgreement() {
return scopes.get(0).getAgreed();
}
도움이 될까 해 코드도 첨부합니다. 해당 코드에서 scopes.get(0).getAgreed() 과정에서 scopes가 null이므로 널포인트 익셉션이 발생하고 있는 상황입니다.