Запускать OAuth URLRequest каждый час? - Свифт - PullRequest
0 голосов
/ 17 мая 2018

Я использую API в своем приложении для iOS, которое позволяет пользователю иметь токен доступа OAuth только в течение часа.Как мне получать новый токен доступа каждый час?Я бы установил TimeInterval или как я мог бы проверить, не истек ли токен доступа?

Вот как я могу получить свой токен доступа с помощью Alamofire.И мне не нужен токен обновления, поскольку мобильные приложения не получают их.

guard let url = URL(string: "https://www.reddit.com/api/v1/access_token") else { return }
            let uuid = UUID().uuidString
            let params: Parameters = [
                "grant_type" : "https://oauth.reddit.com/grants/installed_client",
                "device_id" : "\(uuid)"]


            let username = "MY_CLIENT_ID"
            let password = ""
            let loginString = String(format: "%@:%@", username, password)
            let loginData = loginString.data(using: String.Encoding.utf8)! as NSData
            let base64EncodedString = loginData.base64EncodedString()

            let headers = ["Content-Type" : "application/x-www-form-urlencoded",
                           "Authorization" : "Basic \(base64EncodedString)"]

            Alamofire.request(url, method: .post , parameters: params, encoding: URLEncoding.httpBody, headers: headers).responseJSON { (response) in

                UserDefaults.standard.set(uuid, forKey: "userID")
                UserDefaults.standard.synchronize()
                if let JSON = response.result.value as? [String:Any] {
                    guard let accessToken = JSON["access_token"] as? String else { return }
                    KeychainWrapper.standard.set(accessToken, forKey: "oauthToken")
                }

1 Ответ

0 голосов
/ 17 мая 2018

Самый простой способ - проверить, является ли токен действительным при выполнении вызова API, и снова аутентифицировать его, если срок его действия истекает. Вы можете декодировать токен используя библиотеку JWTDecode. -> JWTDecode

Вы можете отладить распечатать свой токен и попытаться увидеть, какую информацию вы получаете с помощью этого сайта https://jwt.io

...