2016-11-25 41 views
3

我试图在Alamofire中传递访问令牌,但在围绕Web的各种方法中引起混淆。如何将访问令牌传递给Alamofire?

以下是我们需要使用的方法。

let todosEndpoint: String = "https:url......." 

let headers = [ 
      "Authorization": "Bearer \(token!)", 
      "Content-Type": "application/X-Access-Token" 
     ] 
     let Auth_header = [ "Authorization" : tokenString! ] 

     Alamofire.request(todosEndpoint, method: .get, parameters: nil, encoding: JSONEncoding.default, headers: Auth_header) 
      .responseJSON { response in 
       print("response.request \(response.request)") // original URL request 
       print("response.response \(response.response)") // HTTP URL response 
       print("response.data \(response.data)")  // server data 
       print("response.result \(response.result)") 

       print("response \(response)") 

     } 

    } 

OR

let aManager = SessionManager() 
     aManager.session.configuration.httpAdditionalHeaders = [ 
      "Authorization": "Bearer tokenString"] 

OR

let headerss = [ 
      "Authorization": tokenString] 

OR

let aManager = SessionManager() 
      aManager.session.configuration.httpAdditionalHeaders = [ 
       "Authorization": "Basic tokenString"] 

什么是通过访问令牌有道?

+0

选择之一。它工作?好,完成。它没有工作?尝试另一个。它有用吗?好。完成。哦,一个也没有工作?试试另一个。这有用吗?不?我没有选择吗?是。 Stackoverflow – zerohero

+0

你不是第一个工作? –

+0

不幸的是,非以上是为我工作?所以我不确定我是否通过任何错误的方式传递令牌 – sss

回答

1

我使用的是这个样子的: -

let username = "Tuser" 
let password = "Tpassword" 
let credentialData = "\(username):\(password)".data(using: String.Encoding.utf8)! 
let base64Credentials = credentialData.base64EncodedString(options: []) 
let headers = ["Authorization": "Basic \(base64Credentials)"] 

OR

let headers = [ "Authorization" : token ] 
+0

什么是您的答案中的用户名和密码...是否需要这样做?我只想传递访问令牌 – sss

+0

后端(API)开发人员为您提供用户名和密码。这称为基本认证。 –

+0

我正在登录api成功获取访问令牌,我每次登录api后都会传递...在AFNetworking中,我一直在做同样的事情,并且从未要求用户名和密码来后台team..is这是Alamofire需要的吗? – sss

2

你有没有试过,它Alamofire文档中的可用:

let headers: HTTPHeaders = [ 
    "Authorization": "Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==", 
    "Accept": "application/json" 
] 

Alamofire.request("https://httpbin.org/headers", headers: headers).responseJSON { response in 
    debugPrint(response) 
} 

另一个例子是:

let user = "user" 
let password = "password" 

var headers: HTTPHeaders = [:] 

if let authorizationHeader = Request.authorizationHeader(user: user, password: password) { 
    headers[authorizationHeader.key] = authorizationHeader.value 
} 

Alamofire.request("https://httpbin.org/basic-auth/user/password", headers: headers) 
    .responseJSON { response in 
     debugPrint(response) 
    } 

另一种方式是:

let user = "user" 
let password = "password" 

let credential = URLCredential(user: user, password: password, persistence: .forSession) 

Alamofire.request("https://httpbin.org/basic-auth/\(user)/\(password)") 
    .authenticate(usingCredential: credential) 
    .responseJSON { response in 
     debugPrint(response) 
    } 
1

它可以通过以下方式使用Alamofire来完成:

let url: String = "https:url......." 
    var request = URLRequest(url: NSURL(string: url)! as URL) 

    // Your request method type Get or post etc according to your requirement 
    request.httpMethod = "POST" 

    request.setValue("Bearer \(token)", forHTTPHeaderField: "Authorization") 
    request.setValue("application/json", forHTTPHeaderField: "Content-Type") 

    // Your required parameter in case of Post request 
    let parameters: [String: Any] = ["paramter1": "vaue1"] 

    request.httpBody = try! JSONSerialization.data(withJSONObject: parameters) 

    Alamofire.request(request).responseJSON { (responseObject) -> Void in 

     // Your required functionality here    

    } 
相关问题