파이어베이스를 이용한 iOS 로그인 구현

2 답변 글타래를 보이고 있습니다
  • 글쓴이
    • odyflame
      참가자
      • 글작성 : 17
      • 답글작성 : 21

      Firebase Oauth를 사용한 iOS 앱 관리

      파이어베이스를 사용할 때 배웠던 내용 정리

      파이어베이스의 편리한 인증 기능

      개발을 기획하고 개발하다 로그인 기능이 필요한 앱들이 있다. 소셜 네트워크나, 친구 혹은 여러 사람들이랑 같이 하는 경우는 특히나 필수로 해야 하는데 로그인 기능을 넣기 위해서는 서버, 데이터베이스도 필수로 갖춘 다음 구현해야 한다. 개인 프로젝트로 안드로이드 앱을 구현할 당시 로그인을 구현하기 위해서 nodejs를 사용해서 js파일을 만들고, 이 만든 것들을 서버에 띄우기 위해 AWS ec2를 새로 생성하고, postgresql을 만드는 등 여러 가지 할 것들이 너무 많았다. 그런데 파이어베이스를 사용하면 파이어베이스가 이를 대신 처리해 주어 너무 편리한 경우가 많다. 이번 글에는 내가 애플로그인을 구현하면서 어려웠던 점이나 알게 된 점들을 간단하게 적어내려고 한다.

      애플 로그인

      내가 알기론 올해 4월부터 로그인이 필요한 앱들은 이제 애플 로그인이 필수로 들어가야 한다는 정보를 들었다.
      이게 모든 로그인하는 앱에서 해당되는 내용인지, 아니면 다른 Oauth를 사용하는 앱만 해당인지, 자체로그인만 있는 앱은 해당되지 않는지 등 정확한 내용을 아는 사람이 많이 없는 것 같다. (혹시라도 정리된 레퍼런스를 보시거나 아시는 분은 답장을 부탁드립니다…)
      애플 로그인을 구현하는 방법은 파이어베이스 공식 문서에 나와 있다. 파이어베이스 공식문서가 가장 공부가 잘 되는 것 같다. 한글버전도 지원하니 한글버전이 필요하면 바꾸면 된다.

      Oaith를 사용하면서 하나 배웠던 점

      Auth.auth().signIn(with: credential) { (authResult, error) in
      authResult?.user.displayname

      //보여지는 이름 : 이현재

      위 코드는 앱을 구현하는 당시 사용했던 코드 중 하나이다.
      보통 파이어베이스와 앱을 연동하고, 로그인이 잘 된다면 유저의 displayname이 잘 보일 것이다.
      그러나, 구글, 페이스북과 다르게 애플에서는 놀랍게도 displayname만 nil값이 던져진다.
      그래서 email, uid 등 다른 것들도 전부 nil값인지 궁금해서 테스트 해본 결과 값이 던져진다.
      즉 이름만 nil 값이 던져진다.

      Unlike other providers supported by Firebase Auth, Apple does not provide a photo URL.

      Also, when the user chooses not to share their email with the app, Apple provisions a unique email address for that user (of the form xyz@privaterelay.appleid.com), which it shares with your app. If you configured the private email relay service, Apple forwards emails sent to the anonymized address to the user’s real email address.

      Apple only shares user information such as the display name with apps the first time a user signs in. Usually, Firebase stores the display name the first time a user signs in with Apple, which you can get with Auth.auth().currentUser.displayName. However, if you previously used Apple to sign a user in to the app without using Firebase, Apple will not provide Firebase with the user’s display name.

      위는 파이어베이스 애플로그인 관련 문서에서 발췌한 것이다.
      요약하자면 애플은 파이어베이스를 사용하지 않았으면 유저의 display name을 공개하지 않는다는 것이다.
      이것 때문에 삽질을 또 좀 했었는데 다른 사람들은 꼭 삽질을 최소화했으면 한다…

      애플이 정말 보안을 고려한다는 느낌이 들었고, 또한 좀 귀찮은 일들은 프로그래머가 해야 한다는 단점도 느꼈다

      파이어베이스 애플 로그인 링크 : <https://firebase.google.com/docs/auth/ios/apple?authuser=0&gt;

      • 이 게시글은 odyflame에 의해 4 years, 1 month 전에 수정됐습니다. 이유: 제목 수정
      • 이 게시글은 odyflame에 의해 4 years, 1 month 전에 수정됐습니다.
      • 이 게시글은 odyflame에 의해 4 years, 1 month 전에 수정됐습니다.
    • 야곰
      키 마스터
      • 글작성 : 37
      • 답글작성 : 580

      로그인이 필요한 앱에서 무조건 애플 로그인을 구현해야 하는 것이 아니라 다른 소셜 서비스를 통해 로그인 하는 앱에 한해서만 필수입니다.
      즉, 이메일을 통한 로그인처럼 다른 소셜 로그인 방식을 사용하지 않는 앱이라면 애플 로그인을 구현하지 않아도 됩니다.
      앱스토어 심사 가이드라인 문서에 명시되어 있습니다.
      또, 마크다운을 사용한 제목이 크게 표시되지 않는 이유는 샵 기호 뒤에 띄어쓰기를 하지 않았기 때문입니다. 띄어쓰기를 하는 것이 대부분의 에디터에서 더 잘 동작할겁니다. 이 댓글을 참고해보세요.
      GitHub의 문서를 한 번 더 읽어보는 것도 좋습니다.

      • 이 답변은 야곰에 의해 4 years, 1 month 전에 수정됐습니다.
    • odyflame
      참가자
      • 글작성 : 17
      • 답글작성 : 21

      앗 제가 본문을 확인을 안해봤네요! 수정하겠습니다
      또한 애플 로그인이 언제 사용하는지 아는 것도 정말 좋은 정보 같습니다!
      야곰님 덕분에 많이 알고 가네요..

2 답변 글타래를 보이고 있습니다
  • 답변은 로그인 후 가능합니다.

logo landscape small

사업자번호 : 743-81-02195
통신판매업 신고번호 : 제 2022-충북청주-1278 호
고객센터 : 카카오톡채널 @yagom