Swift- 電子書APP

前言:

登入註冊&個人資訊的功能設定,是串接 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()}}

--

--