Swift- 電子書APP
Published in
4 min readApr 26, 2020
前言:
登入註冊&個人資訊的功能設定,是串接 Okta 提供的管理賬號API。
什麼是 Okta?
”OKTA 幫助管理和保護現代應用程序中的用戶身份驗證,並幫助開發人員將身份控制構建到應用程序。“
OKTA 身份驗證用於驗證用戶身份並為他們提供個性化體驗。通過OKTA進行身份驗證可以使用電子郵件密碼,電話號碼或使用第三方(例如Google,Facebook,Twitter和Github)提供的身份進行。
Xcode 的設定
通過 Storyboard 分配了三個 view controller
- LoginViewController — 讓使用者登入。
- SignUpViewController — 註冊頁面。
- HomeViewController — 登入和註冊後進入的第一個畫面。
為方便管理API,因此彙整所有功能到同一個檔案。
- Struct.swift — 型別定義
- ApiControl.swift — 註冊/登入 Api
部分 Struct.swift 如下
enum NetworkError: Error {case Error}enum RegisterError: Error {case Err}enum GetProfileError: Error {case GPErr}enum GetPhotoURLError: Error {case GPUErr}//This is for User Data Managementstruct Profile: Codable{var login:Stringvar firstName:Stringvar lastName:String}
部分 api 代碼
func LoginAPI(LoginUserName:String, LoginPassWord:String, completion: @escaping((Result<LoginDec, NetworkError>) -> Void)){let url = URL(string: "https://dev-976098.okta.com/api/v1/authn")var urlRequest = URLRequest(url: url!)urlRequest.httpMethod = "POST"urlRequest.setValue("application/json", forHTTPHeaderField: "Content-Type")urlRequest.setValue("SSWS 00Nv7lHk73t3tqrNP2d593tEshKK0kXWyHTLCTpc4u", forHTTPHeaderField: "Authorization")struct Login: Encodable {var username:Stringlet password:String}let userLogin = Login(username: LoginUserName, password: LoginPassWord)let jsonEncoder = JSONEncoder()if let data = try? jsonEncoder.encode(userLogin){urlRequest.httpBody = dataURLSession.shared.uploadTask(with: urlRequest, from: data) { (retData, res, err) inlet decoder = JSONDecoder()if let retData = retData, let dic = try?decoder.decode(LoginDec.self, from: retData), dic.status == "SUCCESS"{completion(.success(dic))}else{completion(.failure(NetworkError.Error))//print(String(data: retData!, encoding: .utf8))}}.resume()}}