Код: Выделить всё
class AuthStore: ObservableObject {
@UIApplicationDelegateAdaptor(AppDelegate.self) var appDelegate
private var authState : OIDAuthState?
@Published var isAuthenticated = false
func getUserData() {
let userEndpoint = URL(string: "https://example.com/my-api/user/1")!
self.authState?.performAction() { accessToken, idToken, error in
if error != nil {
print("Error fetching fresh tokens: \(error?.localizedDescription ?? "Unknown error")")
return
}
guard let accessToken = accessToken else {
return
}
// Add Bearer token to request
var urlRequest = URLRequest(url: userEndpoint)
urlRequest.allHTTPHeaderFields = ["Authorization": "Bearer \(accessToken)"]
let task = URLSession.shared.dataTask(with: urlRequest) { data, response, error in
print("Performing patron information request")
if let error = error {
print("Error: \(error.localizedDescription)")
return
}
if let data = data {
do {
let decodedData = try JSONDecoder().decode(User.self, from: data)
self.patron = decodedData
} catch {
print("JSON Decoding error: \(error.localizedDescription)")
}
}
}
task.resume()
}
}
Код: Выделить всё
func getData(url: URL) -> T {
self.authState?.performAction() { accessToken, idToken, error in
if error != nil {
print("Error fetching fresh tokens: \(error?.localizedDescription ?? "Unknown error")")
return
}
guard let accessToken = accessToken else {
return
}
// Add Bearer token to request
var urlRequest = URLRequest(url: url)
urlRequest.allHTTPHeaderFields = ["Authorization": "Bearer \(accessToken)"]
let task = URLSession.shared.dataTask(with: urlRequest) { data, response, error in
print("Performing patron information request")
if let error = error {
print("Error: \(error.localizedDescription)")
return
}
if let data = data {
do {
let decodedData = try JSONDecoder().decode(T.self, from: data)
self.patron = decodedData
} catch {
print("JSON Decoding error: \(error.localizedDescription)")
}
}
}
task.resume()
}
}
Подробнее здесь: https://stackoverflow.com/questions/784 ... th-library