반응형
소셜 로그인을 구현하는 과정에서 발생한 트러블 슈팅에 대해 정리해 보려고 합니다.
http://auth/auth-code-error#error=server_error&error_code=500&error_description=Database+error+saving+new+user
발생한 오류 🔥
Google과 Kakao로 로그인을 시도할 때 신규 사용자를 데이터베이스에 저장하는 과정에서 다음과 같은 오류가 발생했습니다.
해결 과정 🔎
기존 트리거 함수는 다음과 같습니다.
create function public.add_new_user()
returns trigger as $$
begin
if new.raw_app_meta_data ->> 'provider' = 'email' then
insert into
public.profiles (id, email, user_name, avarta_url)
values
(
new.id,
new.email,
new.raw_user_meta_data ->> 'user_name',
new.raw_user_meta_data ->> 'avarta_url'
);
elsif new.raw_app_meta_data ->> 'provider' = 'kakao' then
insert into
public.profiles (id, email, user_name, avatar_url)
values
(
new.id,
new.email,
new.raw_user_meta_data ->> 'name',
new.raw_user_meta_data ->> 'avatar_url'
);
elsif new.raw_app_meta_data ->> 'provider' = 'google' then
insert into
public.profiles (id, email, user_name, avatar_url)
values
(
new.id,
new.email,
new.raw_user_meta_data ->> 'name',
new.raw_user_meta_data ->> 'avatar_url'
);
end if;
return new;
end;
$$ language plpgsql security definer;
이 트리거는 사용자의 로그인 provider에 따라 유저 정보를 `public.profiles`테이블에 저장하는 역할을 하는데 해당 쿼리문에 문제가 발생해 신규 유저가 등록되지 않는 문제가 발생했습니다.
해결 방법 ✨
문제를 추적해 보니, `email` provider에서 잘못된 속성 `avarta_url`을 사용하고 있었고, `avatar_url`로 수정한 후 코드가 정상 작동하게 되었습니다.
if new.raw_app_meta_data ->> 'provider' = 'email' then
insert into
public.profiles (id, email, user_name, avatar_url) -- 수정된 부분
values
(
new.id,
new.email,
new.raw_user_meta_data ->> 'user_name',
new.raw_user_meta_data ->> 'avatar_url' -- 수정된 부분
);
느낀 점 ❕
작은 오타 하나가 시스템의 작동을 방해할 수 있다는 점... 앞으로 더욱 데이터 구조와 속성을 면밀히 검토하는 것이 필요하다 생각했습니다.
반응형
'공부 > 트러블 슈팅' 카테고리의 다른 글
[트러블 슈팅] Next.js에서 이미지 최적화로 FCP 및 LCP 성능 개선하기: 이미지 압축을 통한 로딩 속도 향상 (0) | 2024.11.14 |
---|---|
[트러블 슈팅] SVG 속성 오류 해결하기 - <svg> Height 속성에서 Expected length, "auto" 오류를 수정하는 방법 (1) | 2024.11.14 |
[트러블 슈팅] Next Vercel 배포 환경 개선 - Dev 환경 최신화 문제 해결 (0) | 2024.10.25 |
[트러블 슈팅] issue daily - 로그인 상태 새로고침 시 유지하기 (1) | 2024.10.18 |
[트러블 슈팅] Next.js generateStaticParams 정적 경로 생성의 오해와 해결 과정 (0) | 2024.10.07 |
[트러블 슈팅] 카카오맵 API를 활용한 캠핑장 데이터 렌더링 최적화 (0) | 2024.09.19 |
[트러블 슈팅] SVG 컴포넌트 재사용 시 발생한 이미지 중복 문제 해결하기 (0) | 2024.09.15 |
[트러블 슈팅] MBTI 테스트 (Glitch에서 JSON-server의 응답 속도 차이) (1) | 2024.09.11 |