Partilhar via


Tutorial: Chamar uma API da Web protegida no aplicativo iOS (Swift)

Este é o quarto tutorial da série de tutoriais que o orienta sobre como entrar em usuários e chamar uma API da Web protegida usando a ID Externa do Microsoft Entra.

Neste tutorial, você:

  • Chame uma API da Web protegida.

Pré-requisitos

  • Tutorial: Iniciar sessão de utilizadores na aplicação móvel iOS (Swift)

  • Um registro de API que expõe pelo menos um escopo (permissões delegadas) e uma função de aplicativo (permissão de aplicativo), como ToDoList.Read. Se ainda não o fez, siga as instruções para chamar uma API em um aplicativo móvel iOS de exemplo para ter uma API da Web ASP.NET Core protegida funcionalmente. Certifique-se de concluir as seguintes etapas:

    • Registre um aplicativo de API da Web.
    • Configure escopos de API.
    • Configure funções de aplicativo.
    • Configure declarações opcionais.
    • Clone ou baixe uma API da Web de exemplo.
    • Configure e execute uma API da Web de exemplo.

Chamar a API

Para chamar uma API da Web protegida do seu aplicativo iOS, use o seguinte 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()
    }

O código especifica o ponto de extremidade da API, garantindo sua validade. Em seguida, ele constrói um objeto de solicitação, definindo o cabeçalho de autorização com o token de acesso obtido. Depois de registrar o início da solicitação, ele executa a solicitação de forma assíncrona usando URLSessiono .

Após a conclusão, ele verifica se há erros durante a solicitação. Se ocorrer um erro, ele registra a mensagem correspondente. Em seguida, ele verifica o sucesso da resposta HTTP, garantindo que ela esteja dentro do intervalo de 200 a 299 códigos de status. Depois, ele desserializa os dados JSON recebidos. Finalmente, ele atualiza o texto de registro, indicando o acesso bem-sucedido à API, juntamente com os detalhes relevantes da resposta HTTP.