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 URLSession
o .
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.