Compartir a través de


Tutorial: Llamada a una API web protegida en la aplicación iOS (Swift)

Se aplica a:Círculo verde con un símbolo de marca de verificación blanca. inquilinos de personal Círculo verde con un símbolo de marca de verificación blanca. inquilinos externos (más información)

Este es el cuarto tutorial de la serie de tutoriales que le guía en el inicio de sesión de los usuarios y la llamada a una API web protegida mediante el identificador de Entra de Microsoft.

En este tutorial, harás lo siguiente:

  • Llame a una API web protegida.

Prerrequisitos

Llamada a la API

Una vez que tenga un token, la aplicación puede usarlo en el encabezado HTTP para realizar una solicitud autorizada a Microsoft Graph.

clave del encabezado valor
Autorización Portador <access-token>

Agregue el siguiente código a la clase ViewController:

    func getContentWithToken() {

        // Specify the Graph API endpoint
        let graphURI = getGraphEndpoint()
        let url = URL(string: graphURI)
        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")

        URLSession.shared.dataTask(with: request) { data, response, error in

            if let error = error {
                self.updateLogging(text: "Couldn't get graph result: \(error)")
                return
            }

            guard let result = try? JSONSerialization.jsonObject(with: data!, options: []) else {

                self.updateLogging(text: "Couldn't deserialize result JSON")
                return
            }

            self.updateLogging(text: "Result from Graph: \(result))")

            }.resume()
    }

Consulte Microsoft Graph API para más información acerca de Microsoft Graph API.

Prueba de la aplicación

Cree e implemente la aplicación en un emulador o dispositivo de prueba. Debe ser capaz de iniciar sesión y obtener tokens para Microsoft Entra ID o cuentas personales de Microsoft.

La primera vez que un usuario inicie sesión en la aplicación, Microsoft Identity le pedirá que consienta los permisos solicitados. Aunque la mayoría de los usuarios pueden dar su consentimiento, algunos inquilinos de Microsoft Entra tienen el consentimiento del usuario deshabilitado, lo que requiere que los administradores den su consentimiento en nombre de todos los usuarios. Para admitir este escenario, registre los ámbitos de la aplicación.

Después de iniciar sesión, esta aplicación mostrará los datos devueltos desde el punto de conexión /me de Microsoft Graph.

Pasos siguientes

Más información sobre la creación de aplicaciones móviles que llaman a las API web protegidas en nuestra serie de escenarios de varias partes.

Este es el cuarto tutorial de la serie de tutoriales que le guía en el inicio de sesión de los usuarios y la llamada a una API web protegida mediante el identificador externo de Microsoft Entra.

En este tutorial, harás lo siguiente:

  • Llame a una API web protegida.

Prerrequisitos

  • 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 protegida funcionalmente ASP.NET Core. Asegúrese de completar los pasos siguientes:

    • Registrar una aplicación de API web.
    • Configuración de ámbitos de API.
    • Configure los roles de aplicación.
    • Configuración de notificaciones opcionales.
    • Clone o descargue la API web de ejemplo.
    • Configure y ejecute la API web de ejemplo.

Llamada a la API

Para llamar a una API web protegida desde la aplicación de iOS, use el código siguiente:

    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 intervalo 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.