Firebase Phone Auth Not Working Diagnosis

Flutter Firebase Phone Auth - SMS Not Arriving? From Diagnosis to Code Fix

After integrating phone number verification into a Flutter app, I faced the situation of “the verification code isn’t arriving.” And when pressing the dev bypass button to skip verification and attempt signup, the server returned “Phone number verification not completed.” Documenting both issues together. Understanding the Structure First The Flutter Firebase Phone Auth flow works like this: Flutter -> FirebaseAuth.verifyPhoneNumber() -> Firebase sends SMS directly | User enters the code | Flutter -> Verify code with Firebase -> Get ID Token | Flutter -> Send firebase_token to backend -> Server verifies token -> Creates PhoneVerification record | Flutter -> Signup request -> Server checks PhoneVerification -> Creates user The key point is that Firebase handles SMS delivery directly. It’s not a structure where Rails or another backend calls Twilio. ...

2025-07-02 · 4 min read · Seunghan
Telegram Bot Intent Classification Bugs

3 Telegram Bot Intent Classification Bugs and Inline Keyboard Confirmation Flow

Telegram 봇에 자연어로 할 일을 추가하는 기능을 운영하던 중 발생한 버그 3가지와, 사용자 경험 개선을 위한 inline keyboard 확인 플로우 구현 내용을 정리한다. 버그 1: “저녁9시” → 09:00(AM)으로 파싱되는 문제 현상 입력: "내일 저녁 커피챗 미팅 저녁9시일정추가" 기대: due_time = "21:00" 실제: due_time = "09:00" Cause extract_time_from_text 메서드에서 패턴 체크 순서가 잘못되어 있었다. # 버그 코드 if match = text.match(/오후\s*(\d{1,2})시/) # 1) 오후 ... end if match = text.match(/오전\s*(\d{1,2})시/) # 2) 오전 ... end if match = text.match(/(\d{1,2})시\s*(\d{1,2})?분?/) # 3) 숫자시 ← 여기서 "9시" 매칭 hour = match[1].to_i # 9 → "09:00" 반환, 아래 case/when은 도달 불가 return "#{hour.to_s.rjust(2, '0')}:00" end case text when /저녁/ return "18:00" # ← 절대 도달 못 함 end “저녁9시"에서 오후, 오전 패턴은 불일치하지만 세 번째 /(\d{1,2})시/ 패턴이 9시를 잡아 09:00을 반환해버린다. 그 아래 case when /저녁/은 절대 실행되지 않는다. ...

2025-06-25 · 5 min read · Seunghan
Dart Api Integration

DART Open API Integration Journey (Rails + Flutter)

Notes on integrating the DART Open API (Korea’s Financial Supervisory Service disclosure system) with a Rails backend. Implemented 5 areas: disclosure monitoring, audit opinions, governance, financial indexes, and equity reports – each step came with its own struggles. Implementation Structure Created a model and ActiveJob for each data type. Each job calls the DART API and inserts data using upsert_all – simple structure. DartCorpCodeSyncJob -> dart_companies (company master) DartDisclosureSyncJob -> dart_disclosures (disclosure list) DartMajorEventSyncJob -> dart_major_events (delisting trigger events -- DS001) DartAuditOpinionSyncJob -> dart_audit_opinions (audit opinions -- DS002/DS003) DartGovernanceSyncJob -> dart_executives / dart_major_shareholders (DS004/DS005) DartFinancialIndexSyncJob -> dart_financial_indexes (fnlttSinglAcntAll) DartEquityReportSyncJob -> dart_equity_reports (equity disclosures) Struggle 1: upsert_all + update_only + updated_at Duplication The first error to hit. ...

2025-06-01 · 5 min read · Seunghan
Privacy Policy Terms Disclaimer Contact