Skip to content

[#378] Github email을 받아오는 방법과 비공개 해놓았을 경우 얼럿에 해당 내용이 뜨도록 개선한다#380

Merged
opficdev merged 9 commits intodevelopfrom
fix/#378-Github-Email
Apr 8, 2026
Merged

[#378] Github email을 받아오는 방법과 비공개 해놓았을 경우 얼럿에 해당 내용이 뜨도록 개선한다#380
opficdev merged 9 commits intodevelopfrom
fix/#378-Github-Email

Conversation

@opficdev
Copy link
Copy Markdown
Owner

@opficdev opficdev commented Apr 8, 2026

🔗 연관된 이슈

📝 작업 내용

📌 요약

  • GitHub 로그인 시 낮은 확률로 이메일을 가져오지 못해 로그인 혹은 계정 연동이 실패하던 문제를 해결
  • /user 응답에 이메일이 없을 경우 /user/emails를 추가 조회하도록 보완
  • 클라우드 함수에서 이메일 누락 원인을 에러 코드로 내려주도록 정리
  • iOS에서는 해당 에러 코드를 기반으로 로그인 전용 얼럿을 띄우도록 수정
  • README의 TestFlight 배지를 App Store 링크로 교체

🔍 상세

  • Firebase requestGithubTokens 함수에서 /user.email이 비어 있으면 /user/emails를 추가 조회하도록 수정
  • GitHub 이메일을 끝내 찾지 못한 경우 클라이언트가 식별 가능한 reason 값을 포함해 에러를 반환하도록 개선
  • iOS GithubAuthenticationService에서 함수 에러의 details.reason을 확인해 EmailFetchError.emailNotFound로 매핑하도록 수정
  • requestTokens의 응답 파싱 실패를 TokenError.invalidResponse로 분리해 의미를 명확히 정리
  • LoginViewModel에서 EmailFetchError.emailNotFound를 전용 로그인 얼럿으로 분기 처리
  • 로그인 실패 시 영어 제목을 Unable to Verify Email로 노출하도록 로컬라이즈 문자열 추가
  • README의 TestFlight 안내를 App Store 링크 및 배지로 교체

@opficdev opficdev self-assigned this Apr 8, 2026
@opficdev opficdev changed the title Fix/#378 GitHub email Github email을 받아오는 방법과 비공개 해놓았을 경우 얼럿에 해당 내용이 뜨도록 개선한다 Apr 8, 2026
@opficdev opficdev changed the title Github email을 받아오는 방법과 비공개 해놓았을 경우 얼럿에 해당 내용이 뜨도록 개선한다 [#378] Github email을 받아오는 방법과 비공개 해놓았을 경우 얼럿에 해당 내용이 뜨도록 개선한다 Apr 8, 2026
Copy link
Copy Markdown
Contributor

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

이번 풀 리퀘스트는 GitHub 로그인 시 이메일 정보를 안정적으로 확보하기 위해 클라이언트와 Firebase Function의 로직을 개선하고, 이메일 확인 불가 시의 에러 처리 및 알림 UI를 추가했습니다. 주요 피드백으로는 URL 생성 시 런타임 에러 방지를 위한 안전한 언래핑 사용, 클라이언트와 서버 간의 중복된 네트워크 요청 제거를 통한 효율성 제고, 그리고 코드 가독성을 위한 데이터 구조 정의 위치 조정이 포함되었습니다.

}

func requestPrimaryVerifiedEmail(accessToken: String) async throws -> String? {
var request = URLRequest(url: URL(string: "https://api.github.com/user/emails")!)
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

high

URL(string: "...")!를 사용하여 URL을 생성하고 있습니다. 만약 주어진 문자열로 URL을 생성하지 못할 경우, 이 코드는 런타임에 크래시를 발생시킬 수 있습니다. 문자열이 상수이고 올바른 형식이 보장되더라도, 안전한 코딩 관례를 위해 강제 언래핑(force unwrapping)은 피하는 것이 좋습니다.
guard let을 사용하여 URL을 안전하게 생성하고, 실패할 경우 적절한 에러를 던지도록 수정하는 것을 권장합니다.

Suggested change
var request = URLRequest(url: URL(string: "https://api.github.com/user/emails")!)
guard let url = URL(string: "https://api.github.com/user/emails") else { throw URLError(.badURL) }
var request = URLRequest(url: url)

@opficdev opficdev added the qa TestFlight에 배포 label Apr 8, 2026
@opficdev opficdev merged commit 13d84d3 into develop Apr 8, 2026
1 check passed
@opficdev opficdev deleted the fix/#378-Github-Email branch April 8, 2026 15:33
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

qa TestFlight에 배포

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Github email을 받아오는 방법과 비공개 해놓았을 경우 얼럿에 해당 내용이 뜨도록 개선한다

1 participant