-
[iOS] Firebase로 REST API 공부하기(+ Postman, Alamofire) - 5. 회원가입, 로그인공부기록/iOS 2021. 9. 1. 19:44


Firebase의 회원가입과 로그인은 POST를 사용한다.
Database를 다루는것과 URL이 달라진다.
회원가입할때는 accounts:signUp, 로그인할때는 accounts:signInWithPassword가 사용된다.
Query로 API_KEY가 사용된다.
Body는 email, password, returnSecureToken으로 간단하게 만든다.
returnSecureToken은 항상 true여야 한다.



먼저 포스트맨으로 확인한 결과다. 테스트는 vocahelper의 테스트 이메일을 사용했다.
idToken과 refreshToken을 얻을 수 있다.
localId는 Firebase 가입하면 생기는 uid다.

Swift로는 URL도 다르게 쓰고해서 AuthManager를 따로 만들어서 사용했다.
enum SignStatus: String { case signUp = "signUp" case signIn = "signInWithPassword" }회원가입과 로그인에 쓰이는 URL을 다르게 만들어 주는데 enum을 사용한다.
private let path = Bundle.main.url(forResource: "GoogleService-Info", withExtension: "plist") private var rootURL: String = "https://identitytoolkit.googleapis.com/v1/accounts:" private func makeURL(signStatus: SignStatus) -> URL! { let data = try! Data(contentsOf: path!) let plist = try! PropertyListSerialization.propertyList(from: data, options: [], format: nil) as! [String : Any] let key = URLQueryItem(name: "key", value: plist["API_KEY"] as? String) let pathURL = rootURL + signStatus.rawValue var component = URLComponents(string: pathURL) component?.queryItems = [key] return component?.url }Query로 쓰이는 API_KEY를 가져오기 위해서 PropertyListSerialization을 사용했다.
makeURL()는 signStatus를 받아서 rawValue를 사용해 URL을 만든다.
func manageSign (signStatus: SignStatus, email: String, password: String) { let parameter: [String : Any] = [ "email" : email, "password" : password, "returnSecureToken" : true ] AF.request(makeURL(signStatus: signStatus), method: .post, parameters: parameter).responseJSON { response in if let error = response.error { print(error) } else if let data = response.data { let json = try? JSONSerialization.jsonObject(with: data, options: .fragmentsAllowed) print(json!) } } }URL은 위에서 만든 enum의 rawValue를 이용한 makeURL의 리턴값을 사용한다.
parameter는 간단하게 [String : Any]를 보낸다.



버튼을 만들어서 간단하게 여러 동작들을 구분지어놨다.
Signup 버튼을 누르면 회원가입이 되면서 토큰 등을 얻을 수 있다.
회원가입하기 전에 이메일/비밀번호 가입을 활성화 시켜야한다.
Login 버튼을 누르면 토큰을 얻을 수 있다.
이 토큰은 로그인 상태에서 할 수 있는 요청들을 할 때 사용된다고한다.
아직 잘모르기 때문에 좀 더 공부해봐야겠다.
'공부기록 > iOS' 카테고리의 다른 글
[iOS] Firebase로 REST API 공부하기(+ Postman, Alamofire) - 4. DELETE (0) 2021.09.01 [iOS] Firebase로 REST API 공부하기(+ Postman, Alamofire) - 3. PATCH (0) 2021.09.01 [iOS] Firebase로 REST API 공부하기(+ Postman, Alamofire) - 2. POST (0) 2021.09.01 [iOS] Firebase로 REST API 공부하기(+ Postman, Alamofire) - 1. GET (0) 2021.09.01 [iOS] 테이블뷰의 contentOffset (0) 2021.05.25