【问题标题】:Run OAuth URLRequest every hour? - Swift每小时运行一次 OAuth URLRequest? - 斯威夫特
【发布时间】:2018-10-27 03:30:27
【问题描述】:

我在我的 iOS 应用程序中使用了一个 API,它只允许用户在一个小时内拥有 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")
                }

【问题讨论】:

    标签: ios swift oauth alamofire access-token


    【解决方案1】:

    最简单的方法是在调用 api 时检查 token 是否有效,如果它即将过期,则再次对其进行身份验证。您可以使用 JWTDecode 库解码令牌。 -> JWTDecode

    您可以调试打印您的令牌并尝试使用此网站https://jwt.io查看您获得的信息

    【讨论】:

      猜你喜欢
      • 2017-07-22
      • 2017-03-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-08
      • 2017-11-13
      • 2015-08-19
      • 2014-09-11
      相关资源
      最近更新 更多