Tutorial: Chamar uma API Web protegida no aplicativo iOS (Swift)
Este é o quarto tutorial da série de tutoriais que guia você sobre como conectar usuários e chamar uma API Web protegida usando o Microsoft Entra External ID.
Neste tutorial, você aprenderá a:
- Chame uma API Web protegida.
Pré-requisitos
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. Caso você ainda não tenha feito isso, siga as instruções para chamar uma API em um aplicativo móvel iOS de exemplo para ter uma API Web do ASP.NET Core funcional e protegida. Certifique-se de concluir as seguintes etapas:
- Registre um aplicativo de API Web.
- Configure escopos de API.
- Configure funções de aplicativo.
- Configure declarações opcionais.
- Clone ou baixe a API Web de exemplo.
- Configure e execute a API Web de exemplo.
Chamar API
Para chamar uma API Web protegida de seu aplicativo iOS, use o código a seguir:
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 em log o início da solicitação, ele a executa de forma assíncrona usando URLSession
.
Após a conclusão, ele verificará se houve algum erro durante a solicitação. Se ocorrer um erro, ele registrará a mensagem correspondente. Em seguida, ele verificará o sucesso da resposta HTTP, garantindo que ela esteja dentro do intervalo de 200 a 299 códigos de status. Depois, ele desserializará os dados JSON recebidos. Por fim, ele atualizará o texto de registro, indicando o acesso bem-sucedido à API juntamente com os detalhes relevantes da resposta HTTP.