갑자기 시작된 베타테스트...
블로그를 작성하고 있을 때, 한 디스코드 알림이 떴다.
너무 행복하다!!!!!!!!!!!!!!!!!!!!!!!
일단 UX면에 있어 회원가입/로그인 실패는 아주 치명적인 부분이기 때문에 빨리 수정해야했다.
0시에 로그인 에러 받은 내 자신...
그런데 우리도 분명 내부 QA를 진행했고, 해당 부분에 관련하여 에러가 전혀 없었기 때문에 갈피를 못잡았다.
더군다나 로그에 찍힌 건 프로필 사진이 잘못됐다는 것이었다.
rest_framework.exceptions.ValidationError: {
'profile_pic': [
ErrorDetail(
string='Upload a valid image. The file you uploaded was either not an image or a corrupted image.',
code='invalid_image'
)
]
}
....? 나는 그냥 카카오에서 주는 url대로 받고 다운로드 받을 뿐인데... 𝔀𝓱𝔂𝓻𝓪𝓷𝓸?
그래서 백엔드에서 url를 남기는 로그를 찍고, 해당 오류가 다시 뜰 때까지 기다렸다.
그러자 나타나는 한 url.
2024-10-26 00:26:54 [ERROR ] get - image url: http://img1.kakaocdn.net/thumb/R640x640.q70/?fname=http://t1.kakaocdn.net/account_images/default_profile.jpeg
그리고 해당 이미지를 다운하는 부분을 다시 보았다.
def download(url):
response = requests.post(url)
binary_data = response.content
temp_file = BytesIO()
temp_file.write(binary_data)
temp_file.seek(0)
return temp_file
너무 깔끔한 구성이라 그런지, 저기서 잘못될 부분이 정말 없어보였다.
그래서 첫 줄에서부터 차례대로 검토하기로 했고, POST 부분을 로컬에서 찍어보니 403 Forbidden이 나왔다.
... 이상할 게 없는 코드였지만 혹시 POST를 쏘고 잘 못 받아 올 수도 있으니 포스트맨에서도 테스트했다. ......?
...알고보니 다른 소셜 로그인의 프로필 사진들은 POST로 되는데, 카카오 기본 프로필만 GET으로 되는 것이었다.정말 어이없게도 응... 그렇다...ㅋ
따라서 카카오 프로필은 POST에서 GET으로 아주 간단히 수정하고 끝냈다. (다른 소셜은 혹시 모르니 POST로 냅뒀다.)
def kakao_download(url):
response = requests.get(url)
binary_data = response.content
temp_file = BytesIO()
temp_file.write(binary_data)
temp_file.seek(0)
return temp_file
다들 삽질 안하셨으면 하는 바램으로...~ 포스팅을 마치겠다.