Oauth 2.0 使用Alamofire时,令牌无效

Oauth 2.0 使用Alamofire时,令牌无效,oauth-2.0,alamofire,Oauth 2.0,Alamofire,环境:Swift 2,iOS 9 我已经推出了自己的HTTP网络库。它没有坏,但我决定把它修好,换成阿拉莫菲尔 以下是我的代码片段: case .HTTPTokenAuth: // Token Auth let dictionary = Locksmith.loadDataForUserAccount("Auth_Token", inService: "KeyChainService") let token = dictionary!.valueForKey("access_to

环境:Swift 2,iOS 9

我已经推出了自己的HTTP网络库。它没有坏,但我决定把它修好,换成阿拉莫菲尔

以下是我的代码片段:

  case .HTTPTokenAuth:  // Token Auth

  let dictionary = Locksmith.loadDataForUserAccount("Auth_Token", inService: "KeyChainService")
  let token = dictionary!.valueForKey("access_token")

  var aManager = Manager.sharedInstance
  aManager.session.configuration.HTTPAdditionalHeaders = ["Authorization": "Bearer \(token!)" ]
  aManager.request(method, requestURL!, parameters: parameters, encoding: .JSON).response { request, response, data, error in

    print("===== Request ================")
    print(request!.allHTTPHeaderFields!)
    print("===== Response ================")
    print(response!.allHeaderFields)
    print("===== Error ================")
    print(error)

  }
问题在于,由于某种原因,Oauth令牌没有进入报头。(至少这似乎是问题所在,因为我在请求头中没有看到它。我收到以下请求/响应:

===== Request ================
["Content-Type": "application/json"]

===== Response ================
[Content-Type: application/json, 
Www-Authenticate: Bearer realm="Doorkeeper", 
error="invalid_token", 
error_description="The access token is invalid", 
Pragma: no-cache, X-Runtime: 0.002205, 
X-Powered-By: Phusion Passenger 4.0.14, X-XSS-Protection: 1; mode=block, Server: nginx/1.6.2 + Phusion Passenger 4.0.14, 
Transfer-Encoding: Identity, 
Cache-Control: no-store, 
Date: Tue, 01 Sep 2015 18:54:16 GMT, 
X-Request-Id: 395d2154-5054-423c-a7bc-f7ef85e0cdbf, 
Connection: keep-alive, 
X-Content-Type-Options: nosniff, 
X-UA-Compatible: chrome=1, 
Status: 401 Unauthorized, 
X-Frame-Options: SAMEORIGIN]

我采用了更简单的方法:

case .HTTPTokenAuth:  // Token Auth

  let dictionary = Locksmith.loadDataForUserAccount("Auth_Token", inService: "KeyChainService")
  let token = dictionary!.valueForKey("access_token")
  let headers = ["Authorization":"Bearer \(token!)"]

  Alamofire.request(method, requestURL!, parameters: parameters, headers: headers, encoding: .JSON)
           .response { request, response, data, error in

    print(request!.allHTTPHeaderFields!)
    print(response)
    print(error)

  }

我采用了更简单的方法:

case .HTTPTokenAuth:  // Token Auth

  let dictionary = Locksmith.loadDataForUserAccount("Auth_Token", inService: "KeyChainService")
  let token = dictionary!.valueForKey("access_token")
  let headers = ["Authorization":"Bearer \(token!)"]

  Alamofire.request(method, requestURL!, parameters: parameters, headers: headers, encoding: .JSON)
           .response { request, response, data, error in

    print(request!.allHTTPHeaderFields!)
    print(response)
    print(error)

  }

不要将
授权
放在会话配置
HTTPAdditionalHeaders
属性中。改为在单个请求上设置它。谢谢,我误读了文档中关于将未更改的头信息放在会话配置中的注释。不要将
授权
放在会话配置中e> HTTPAdditionalHeaders属性。改为在单个请求上设置。谢谢,我误读了文档中关于将未更改的头信息放入会话配置的注释。