Tutorial: llamada a una API web protegida en la aplicación iOS (Swift)
Este es el cuarto tutorial de la serie de tutoriales que le guía en el registro de usuarios y la llamada a una API web protegida utilizando Id. externa de Microsoft Entra.
En este tutorial, hará lo siguiente:
- Llame una API web protegida.
Requisitos previos
Tutorial: inicio de sesión de usuarios en la aplicación móvil de iOS (Swift)
Un registro de API que expone al menos un ámbito (permisos delegados) y un rol de aplicación (permiso de aplicación), como ToDoList.Read. Si aún no lo ha hecho, siga las instrucciones para llamar a una API en una aplicación móvil de iOS de ejemplo para tener una API web de ASP.NET Core protegida funcionalmente. Asegúrese de completar los pasos siguientes:
- Registrar una aplicación de API web.
- Configuración de ámbitos de API.
- Configuración de los roles de aplicación.
- Configuración de notificaciones opcionales.
- Clonación o descarga de la API web de ejemplo.
- Configuración y ejecución de la API web de ejemplo.
Llamada a la API
Para llamar a una API web protegida desde la aplicación de iOS, use el siguiente código:
func getContentWithToken() {
// Specify the API endpoint in _Configuration.swift_ file you created earlier
guard let url = URL(string: Configuration.kProtectedAPIEndpoint) else {
let errorMessage = "Invalid API url"
print(errorMessage)
updateLogging(text: errorMessage)
return
}
var request = URLRequest(url: url)
// Set the Authorization header for the request. We use Bearer tokens, so we specify Bearer + the token we got from the result
request.setValue("Bearer \(self.accessToken)", forHTTPHeaderField: "Authorization")
self.updateLogging(text: "Performing request...")
URLSession.shared.dataTask(with: request) { data, response, error in
if let error = error {
self.updateLogging(text: "Couldn't get API result: \(error)")
return
}
guard let httpResponse = response as? HTTPURLResponse,
(200...299).contains(httpResponse.statusCode)
else {
self.updateLogging(text: "Couldn't get API result: \(error)")
return
}
guard let data = data, let result = try? JSONSerialization.jsonObject(with: data, options: []) else {
self.updateLogging(text: "Couldn't deserialize result JSON")
return
}
self.updateLogging(text: """
Accessed API successfully using access token.
HTTP response code: \(httpResponse.statusCode)
HTTP response body: \(result)
""")
}.resume()
}
El código especifica el punto de conexión de API, lo que garantiza su validez. A continuación, crea un objeto de solicitud y establece el encabezado de autorización con el token de acceso obtenido. Después de registrar el inicio de la solicitud, realiza la solicitud de forma asincrónica mediante URLSession
.
Tras la finalización, comprueba si hay errores durante la solicitud. Si se produce un error, registra el mensaje correspondiente. A continuación, comprueba el éxito de la respuesta HTTP, asegurándose de que se encuentra dentro del rango de 200 a 299 códigos de estado. Después, deserializa los datos JSON recibidos. Por último, actualiza el texto de registro, lo que indica el acceso correcto a la API junto con los detalles de respuesta HTTP pertinentes.