SSL_ERROR_SSL(1): operation failed within the library
Deadlock
I assume spotifyRequest will be called on the main thread.
So if the main thread reaches the line
group.wait()
and this line of responseJSON completionHandler was not called yet:
group.leave()
then the main thread is blocked due to the call of group.wait() above. Due to the blocked main thread group.leave() can't be called. Classical deadlock.
Verfication
Setting a breakpoint to the line
if let safeStatus = status {
shows that this line is never called.
Minimal Example that is running
As a starting point here the code for a minimal example that delivers a result.
import UIKitimport Alamofireclass ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() self.contactSpotify { print ("result: \(String(describing: $0)) error: \(String(describing: $1))") } } func contactSpotify(completion: @escaping ([String: Any]?, Error?) -> Void) { let url = URL(string: "https://accounts.spotify.com/api/token")! Alamofire.request(url, method: .post, parameters: ["grant_type": "refresh_token", "client_id": "<someClientId>", "refresh_token": "<someRefreshToken>", "client_secret": "<someClientSecret>"]) .validate() .responseJSON { response in guard response.result.isSuccess else { completion(nil, response.result.error) return } completion(response.result.value as? [String: Any], nil) } }}
This gives as output in the console:
result: Optional(["access_token": XXX, "scope": user-read-email user-read-private, "token_type": Bearer, "expires_in": 3600]) error: nil
ATS Settings in info.plist
Spotify offers a valid TLS certificate chain on their server. So there is no need for ATS settings in info.plist.
SSL Warnings in Console
I get the same SSL warnings in the console when I run the application on an iOS 12 simulator like you. Nonetheless the connection is established and the request delivers data. Perhaps this is gone in one of the next betas.