2016-02-12 2 views
2

Я использую Alamofire и она отлично работает для базовой аутентификации # 1Alamofire Basic и oauth2

Alamofire.request(.GET, ENDPOINT_URL).authenticate(user:_username, password: _password).responseJSON { response in } 

и oauth2 # 2

let headers = ["Authorization": "Bearer \(getLoginToken()!)"] 

Alamofire.request(.POST, ENDPOINT_URL2, parameters: para, headers: headers,encoding: .JSON).responseJSON { response in } 

Теперь я меняюсь некоторые аутентификации API для OAuth2, это будет смесь как Basic, так и OAuth. Проблема возникает в # 3

  1. Я делаю Basic Auth Request первый, аутентификация пасс
  2. Я делаю OAuth2 запрос первый, аутентификация пасс
  3. Я делаю Basic Auth Request и OAuth2 запрос, проход аутентификации для базовой аутентификации и fail для OAuth2.

После отладки я понимаю, что он по-прежнему отправляет заголовки основного Auth Request, а недавно добавленные заголовки не отражаются и не обновляются до Alamofire.

Я hava a Singleton Класс APIClient, который вызывает Alamofire.request(). Когда я исследую класс Alamofire, получается, что Manager также является одноэлементным классом. Я предполагаю, что это может быть связано с вышеупомянутыми синглтонами.

Любые советы о том, как правильно отправлять заголовки? Или как сделать Basic Auth & OAuth2 один за другим?

Alamofire: v3.1.2

XCode: 7.2.1

IOS: 9

ответ

0

Для тех, кто столкнулся с подобными проблемами. Я использую SwiftyHTTP для базовых OAuth и Alamofire для OAuth2.

Хотя это не идеальное решение, но его работа отлично.