【问题标题】:How to implement the Bearer Token to validate the API url如何实现 Bearer Token 来验证 API url
【发布时间】:2021-12-26 13:26:08
【问题描述】:

我设置了 API,唯一的就是 Bearer Token 我找不到任何有关如何实现它的代码的信息,因此它可以验证我用作 API 的 URL。

我是否需要为不记名令牌创建新的 swift 文件,或者我可以将代码写入 API swift 文件“下面的代码是 api 文件”

static let shared = APICaller()
private let baseURL = "http://000.000.000.000:3030/api/"

private init() {}

var vehicles = [Vehicles]()
    
func getVehicles(for id: String, IMEI: Int, completed: @escaping (Result<[Vehicles],Errors>) -> Void ){
    let endpoint = baseURL + "GetVehicle/?UserIdentificationValue=346HIU4623UIHG3I3I&IMEI=216216123612"
    
    guard let url = URL(string: endpoint) else {
        completed(.failure(.invalidURL))
        return
    }
    
    let task = URLSession.shared.dataTask(with: url) { data, response, error in
        
        if let _ = error {
            completed(.failure(.unableToComplete))
            return
        }
        guard let response = response as? HTTPURLResponse, response.statusCode == 200 else {
            completed(.failure(.invalidResponse))
            return
        }
        guard let data = data else {
            completed(.failure(.invalidData))
            return
        }
        
        do {
            let decoder = JSONDecoder()
            decoder.keyDecodingStrategy = .convertFromSnakeCase
            
            self.vehicles = try JSONDecoder().decode([Vehicles].self, from: data)
            
            DispatchQueue.main.async {
                completed(.failure(.invalidData))
            }
            
        } catch {
            completed(.failure(.invalidData))
        }
    }
    task.resume()

提前致谢

我也是 swift 的新手,所以如果你能告诉我我的 API 代码是正确的或需要任何修复,我将不胜感激,因为它是关于接收一些汽车信息并放入表格视图单元格的:)

【问题讨论】:

    标签: ios swift api


    【解决方案1】:

    我已附加请求,包括您需要在其中传递 Bearer 令牌的标头,就像在下面的代码中所做的那样

        let headers = [
            "content-type": "application/json",
            "authorizetoken": "NjQzOPA2N0NDNDFAH4CNDk3R23F2FQUY0NjV3FFE=",
            "cache-control": "no-cache",
            ]
        
        let parameters = ["id":"123456789"] as [String : Any]
        let postData = try? JSONSerialization.data(withJSONObject: parameters, options: [])
        let request = NSMutableURLRequest(url: NSURL(string: "Your URL")! as URL,
                                          cachePolicy: .useProtocolCachePolicy,
                                          timeoutInterval: 120.0)
        
        request.httpMethod = "POST"
        request.allHTTPHeaderFields = headers
        request.httpBody = postData as? Data
        request.cachePolicy = NSURLRequest.CachePolicy.reloadIgnoringCacheData
        request.cachePolicy = NSURLRequest.CachePolicy.reloadIgnoringLocalCacheData
        request.cachePolicy = NSURLRequest.CachePolicy.reloadIgnoringLocalAndRemoteCacheData
    

    【讨论】:

    • 感谢 Lott 朋友,所以在 id 的参数:应该是不记名令牌,也在“authorizetoken”?
    • 不,标题中有一个带有“authorizetoken”的参数,您需要在其中使用密钥 Bearer 传递您的令牌,然后是一个空格和您的令牌。
    • 好吧伙计,所以在字符串:“你的 URL”我必须给出 api 的基本 URL,在 authorizetoken 我必须只传递令牌,其他都可以,我不能碰。我是新伙伴 :( 不过谢谢
    • 我还必须补充一点,授权是基本的,只需要这个令牌:NjQzOPA2N0NDNDFAH4CNDk3R23F2FQUY0NjV3FFE=
    • 是的,在“authorizetoken”中传递你的令牌:标题中的“Bearer Your token”
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-09-06
    • 1970-01-01
    • 2014-12-26
    • 2021-08-02
    • 2017-08-21
    • 1970-01-01
    • 2015-12-25
    相关资源
    最近更新 更多