본 게시물은 OAuth를 구현하는 방법이 아닌 제가 생각한 특징을 정리한 글입니다.
이번에 다이어리 앱을 새로 업데이트하면서 소셜로그인 기능을 도입하기로 결정했다.
기존에 CoreData로 앱 내에 저장하던 다이어리 데이터를 보다 안전하게 저장하기 위해 firebase에 저장하기 위해서였다.
애플 정책에 따라 Apple로그인은 구현하지 않으면 리젝 사유가 된다. 😅 따라서 Apple Login은 당연히 구현하기로 결정했고, 조사해보니 사용자가 가장 많이 사용하는 소셜로그인이 Kakao라는 것을 알게되었다. 사용자의 편의를 위해 Kakao를 추가하고, 추가적으로 전에 구현해본 경험이 있는 Google로그인도 함께 적용하기로 결정했다.
1. Apple
애플로그인은 꼭 애플 개발자 계정이 있어야 한다. 1년에 약 12만원 가량 돈을 지불한 사람만 이 기능을 사용할 수 있다. 그리고 만약 내가 소셜로그인이 아닌 Email을 이용하여 로그인한다면 애플 로그인이 필수적이지는 않다. 그 외 다른 소셜로그인을 사용하고 싶다면 애플로그인은 무조건 구현해야 리젝당하지 않는다.
또한 애플이 권장하는 버튼의 규격에 맞게 사용해야 한다. (참고)에서 애플 로그인을 커스텀에 다운로드할 수 있다.
그리고 파이어베이스에서 제공해주는 로그인 제공업체 중 하나이다. 따라서 파이어베이스에서 로그인하는 방법을 문서로 제공해준다.
2. Google
구글은 CocoaPods나 Swift Package Manager를 통해 'GoogleSignIn-iOS'를 설치해야 사용할 수 있다. (참고)
조금 특이하다고 느낀점은 구글에서 제공해주는 버튼의 커스텀이 거의 힘들었다. 그래서 나는 직접 제작해 사용하였다. (제공해주는 버튼이 좀 많이 별로였다..ㅎㅎ)
그리고 파이어베이스에서 제공해주는 로그인 제공업체 중 하나이다. 따라서 파이어베이스에서 로그인하는 방법을 애플과 동일하게 문서로 제공해준다.
3. Email
사용자가 입력한 아이디와 비밀번호를 통해 회원가입하고 로그인한다. 파이어베이스 자체에서 이메일 형식이 아닌 아이디는 아이디로 인식하지 않아 에러메시지를 보낸다. 따라서 사용자가 이메일형식으로 아이디를 입력하도록 유도해야한다. 비밀번호도 마찬가지로 6자이상이 아니면 에러메시지를 보낸다. 이 또한 사용자가 6자이상의 비밀번호를 입력할 수 있도록 유도해야한다.
입력한 아이디와 비밀번호를 파이어베이스에서 제공하는 createUser()를 이용하여 가입하고, signIn()으로 로그인 할 수 있다.
나는 로그인화면과 회원가입 화면이 달라서 각각의 상황에 적절한 함수를 사용하면 되었지만, 로그인 겸 회원가입을 하는 상황에서는 아이디와 비밀번호를 입력하면 무조건 회원가입을 시도하고 아이디가 존재하면(에러가나면) 로그인을 시도하도록 구현하면 되었다. (누군가의 블로그에서 봤다..ㅎㅎ) 이 로직을 카카오 로그인에서 활용하였다.
4. Kakao
카카오 로그인은 사용자가 가장 많이 사용하기에 내가 생각할 때는 어지간하면 구현해주면 좋다고 생각한다.
카카오 로그인은 파이어베이스에서 제공해주지 않기 때문에 이메일 로그인과 같은 함수를 사용하여 로그인한다.
이메일로그인에서는 아이디와 비밀번호를 매개변수값에 넣어 전달했지만 카카오로그인은 아이디는 있지만 비밀번호는 없기 때문에 User.id라는카카오 로그인 API 호출 후 받은 고유한 값을 전달하여 로그인한다.
위에서 언급했다시피 아이디와 비밀번호를 입력하면 무조건 회원가입을 시도하고 아이디가 존재하면(에러가나면) 로그인을 시도하도록 한다.
++) 이전 게시물로 올린적이 있지만 깃허브 로그인도 전에 해 보았는데 파이어베이스로 연동해본 경험은 없어서 나중에 기회가 된다면 한번 시도해보아야겠다ㅎ.ㅎ
'iOS' 카테고리의 다른 글
| [iOS] xcode Vary for Traits (0) | 2023.03.28 |
|---|---|
| [iOS] 델리게이트 패턴 (Delegate Pattern) (0) | 2023.03.18 |
| [iOS] 동시성과 관련된 문제 (Concurrency Problems) (0) | 2022.12.16 |
| [iOS] 디스패치 그룹(Dispatch Group) (0) | 2022.12.13 |
| [iOS] 디스패치큐(GCD) 사용 시 주의해야할 사항 (0) | 2022.12.11 |