Apple Sso 403 Email Verified Type Mismatch

Apple Sign-In 403 에러: email_verified 타입 불일치와 복붙 버그 3종 세트

Apple Sign-In이 403 Forbidden으로 실패하는데, Google Sign-In은 정상 동작하는 상황이었다. 동일한 스택(Rails 8 + Flutter)의 다른 프로젝트에서는 Apple 로그인이 잘 되고 있어서 비교 분석했다. 증상 Apple 로그인: 403 Forbidden Google 로그인: 정상 성공 에러 메시지: "Email not verified by Apple" 원인 1: email_verified 타입 불일치 (핵심) Apple과 Google은 JWT에서 email_verified 필드를 다른 타입으로 반환한다. Provider email_verified 타입 값 예시 Google boolean true Apple string 또는 boolean "true" 또는 true 문제의 코드: ...

2025-10-25 · 3분 소요 · Seunghan
Rails Flutter Server Health Check 4 Issues

Rails + Flutter 앱 서버 점검기: 한 번에 터진 4가지 문제와 해결

앱 테스트 빌드를 올리고 직접 돌려보니 한꺼번에 4가지가 안 됐다. Google 로그인 실패, AI 일정 생성이 엉뚱한 결과, 알림 버튼 누르면 크래시, 인기 여행지 섹션이 텅 비어있음. 하나씩 원인을 찾고 고친 과정을 정리한다. 1. Google SSO는 실패하는데 Apple 로그인은 성공 증상 Apple Sign-In은 정상 동작하지만 Google Sign-In만 500 에러. 클라이언트에서는 로그인 실패 토스트만 보인다. 원인 컨트롤러는 이전 커밋에서 수정했지만, Model의 from_omniauth 메서드는 그대로였다. # User 모델 — 마이그레이션 후에도 옛날 컬럼명 참조 def self.from_omniauth(auth) user = find_or_initialize_by(provider: auth.provider, uid: auth.uid) # uid 컬럼 없음 user.image = auth.info.image # image 컬럼도 없음 end DB 스키마에서는 uid → provider_uid, image → avatar_url로 마이그레이션된 상태. 컨트롤러 쿼리는 수정했지만 모델 내부 메서드가 여전히 옛 컬럼을 참조하고 있었다. ...

2025-10-15 · 5분 소요 · Seunghan
Rails Oauth Provider Uid Column Mismatch

Rails OAuth: PG::UndefinedColumn users.uid 에러 — 컬럼명 불일치

Apple Sign-In / Google Sign-In 연동 후 클라이언트에서는 500 에러만 보이는데, 서버 로그를 보면 실제 원인이 다른 경우가 있다. 오늘 마주친 케이스를 정리한다. SSO 연동 초기에는 클라이언트(Flutter) 쪽 설정 문제인지, 서버 쪽 문제인지 구분하기가 쉽지 않다. 이 글에서는 서버 DB 컬럼명 불일치로 인한 PG::UndefinedColumn 에러를 빠르게 진단하고 수정하는 방법을 다룬다. 에러 PG::UndefinedColumn: ERROR: column users.uid does not exist LINE 1: SELECT "users".* FROM "users" WHERE "users"."uid" = $1 ... 클라이언트(Flutter)에서는 401 Unauthorized로 보인다. ...

2025-09-06 · 2분 소요 · Seunghan
Ios Gidclientid Info Plist Missing

Flutter iOS Google Sign-In: GIDClientID가 Info.plist에 없을 때

Flutter iOS 앱에서 Google Sign-In을 구현할 때 Firebase를 쓰지 않고 Google Cloud Console에서 직접 OAuth 클라이언트 ID를 발급받는 경우가 있다. 이때 GIDClientID를 Info.plist에 명시적으로 추가하지 않으면 런타임에 에러가 발생한다. Firebase 프로젝트를 쓰는 경우 GoogleService-Info.plist가 이 역할을 자동으로 대신해주기 때문에 의식하지 못하고 지나치기 쉬운 설정이다. 이 글에서는 에러 원인과 해결 방법을 정리한다. 에러 메시지 PlatformException(google_sign_in, No active configuration. Make sure GIDClientID is set in Info.plist., null, null) 원인 google_sign_in iOS SDK는 초기화 시 Info.plist에서 GIDClientID 키를 읽는다. ...

2025-08-23 · 2분 소요 · Seunghan
Google Oauth Keeps

Flutter 앱 Google OAuth 동의 화면 인증 셋업 정리

Flutter 앱에 Google 로그인을 붙이면서 OAuth 동의 화면 인증까지 진행한 과정을 정리한다. Firebase 없이 Google Cloud Console에서 직접 OAuth 클라이언트 ID를 발급받아 연동하는 경우, 동의 화면 설정과 인증 제출 과정에서 예상치 못한 에러가 자주 발생한다. 실제로 겪은 삽질 위주로 기록한다. 전체 흐름 요약 Google Cloud Console에서 OAuth 2.0 클라이언트 ID 생성 (iOS 타입) 동의 화면 브랜딩 설정 앱 도메인 및 개인정보처리방침 URL 등록 필요한 범위(scope) 설정 인증 제출 및 프로덕션 전환 브랜딩 설정 Google Cloud Console → API 및 서비스 → OAuth 동의 화면 → 브랜딩 에서 아래 항목을 입력한다. ...

2025-06-11 · 3분 소요 · Seunghan
Flutter Google Signin Ios Setup

Flutter Google Sign-In iOS 설정: GoogleService-Info.plist CLIENT_ID 누락 문제

Flutter 앱에서 google_sign_in 패키지로 Google 로그인을 구현했는데 iOS에서만 동작하지 않는 경우, GoogleService-Info.plist에 CLIENT_ID가 없는 게 원인인 경우가 많다. 문제 Android에서는 Google 로그인이 잘 되는데 iOS에서는 로그인 창이 뜨지 않거나 에러가 발생한다. Firebase 콘솔에서 iOS 앱을 등록하고 GoogleService-Info.plist를 다운로드해서 프로젝트에 추가했지만, 기본 다운로드 파일에는 CLIENT_ID가 포함되지 않는 경우가 있다. GoogleService-Info.plist에 CLIENT_ID 추가 1. iOS OAuth 클라이언트 확인 Google Cloud Console → API 및 서비스 → 사용자 인증 정보로 이동한다. Firebase 프로젝트를 생성하면 자동으로 iOS용 OAuth 클라이언트가 생성되어 있다. 클라이언트 ID 형식은 아래와 같다. ...

2025-06-04 · 2분 소요 · Seunghan
개인정보처리방침 문의