iOS - Swift - Alamofire 5 - REST Client example
Example of simple OAuth2 authentication using Alamofire 5 and RxSwift library.
Supported grant types:
- password
- refresh_token
- client_credentials
Supported interceptors:
- Client credentials grant type authentication interceptor
- Password grant type authentication and refresh token interceptor with request synchronization
Example call
extension Api {
enum OAuth2Service {
static func getUserAccessToken(username: String, password: String) -> AuthorizedEndpoint
{
return
AuthorizedEndpoint(
raw:
Endpoint(
authType: .
basic,
method: .
post,
path:
"oauth/token",
parameters: [
"username"
: username,
"password"
: password,
"grant_type"
: GrantType.
password
]
)
)
}
...
}
}
let client = AuthorizedClient<Scope.Guest>()
client
.request(Api.OAuth2Service.getUserAccessToken(username: username, password: password))
.asObservable()
.subscribe(
onNext: { accessToken in
DispatchQueue.main.async {
// Store access token
}
},
onError: { error in
DispatchQueue.main.async {
// Handle api error
guard let errorResponse = error.asApiError?.response else {
...
return
}
...
}
}
)
.disposed(by: disposeBag)