Samouczek: wywoływanie chronionego internetowego interfejsu API w aplikacji Android (Kotlin)
Jest to czwarty samouczek z serii samouczków, który przeprowadzi Cię przez proces wywoływania chronionego internetowego interfejsu API przy użyciu Tożsamość zewnętrzna Microsoft Entra.
W tym samouczku wykonasz następujące elementy:
- Wywoływanie chronionego internetowego interfejsu API
Wymagania wstępne
Samouczek: logowanie użytkowników w aplikacji mobilnej Dla systemu Android (Kotlin)
Rejestracja interfejsu API, która uwidacznia co najmniej jeden zakres (uprawnienia delegowane) i jedną rolę aplikacji (uprawnienie aplikacji), taką jak ToDoList.Read. Jeśli jeszcze tego nie zrobiono, postępuj zgodnie z instrukcjami wywoływania interfejsu API w przykładowej aplikacji mobilnej systemu Android, aby mieć funkcjonalny chroniony ASP.NET Core internetowego interfejsu API. Upewnij się, że wykonasz następujące kroki:
- Rejestrowanie aplikacji internetowego interfejsu API
- Konfigurowanie zakresów interfejsu API
- Konfigurowanie ról aplikacji
- Konfigurowanie opcjonalnych oświadczeń
- Klonowanie lub pobieranie przykładowego internetowego interfejsu API
- Konfigurowanie i uruchamianie przykładowego internetowego interfejsu API
Wywoływanie interfejsu API
Aby wywołać internetowy interfejs API z aplikacji systemu Android w celu uzyskania dostępu do danych zewnętrznych lub usług, zacznij od utworzenia obiektu towarzyszącego w
MainActivity
klasie. Obiekt towarzyszący powinien zawierać następujący kod:companion object { private const val WEB_API_BASE_URL = "" // Developers should set the respective URL of their web API here private const val scopes = "" // Developers should append the respective scopes of their web API. }
Obiekt towarzyszący definiuje dwie stałe prywatne:
WEB_API_BASE_URL
, gdzie deweloperzy ustawiają adres URL internetowego interfejsu API iscopes
, gdzie deweloperzy dołączają odpowiedniscopes
internetowy interfejs API.Aby obsłużyć proces uzyskiwania dostępu do internetowego interfejsu API, użyj następującego kodu:
private fun accessWebApi() { CoroutineScope(Dispatchers.Main).launch { binding.txtLog.text = "" try { if (WEB_API_BASE_URL.isBlank()) { Toast.makeText(this@MainActivity, getString(R.string.message_web_base_url), Toast.LENGTH_LONG).show() return@launch } val apiResponse = withContext(Dispatchers.IO) { ApiClient.performGetApiRequest(WEB_API_BASE_URL, accessToken) } binding.txtLog.text = getString(R.string.log_web_api_response) + apiResponse.toString() } catch (exception: Exception) { Log.d(TAG, "Exception while accessing web API: $exception") binding.txtLog.text = getString(R.string.exception_web_api) + exception } } }
Kod uruchamia coroutine w głównym dyspozytorze. Zaczyna się od wyczyszczenia dziennika tekstowego. Następnie sprawdza, czy podstawowy adres URL internetowego interfejsu API jest pusty; Jeśli tak, wyświetla wyskakujące komunikat i zwraca. Następnie wykonuje żądanie GET do internetowego interfejsu API przy użyciu podanego tokenu dostępu w wątku w tle.
Po otrzymaniu odpowiedzi interfejsu API zaktualizuje dziennik tekstowy przy użyciu zawartości odpowiedzi. Jeśli w trakcie tego procesu wystąpi jakikolwiek wyjątek, rejestruje wyjątek i aktualizuje dziennik tekstowy przy użyciu odpowiedniego komunikatu o błędzie.
W kodzie, w którym określamy wywołanie zwrotne, używamy funkcji o nazwie
performGetApiRequest()
. Funkcja powinna mieć następujący kod:object ApiClient { private val client = OkHttpClient() fun performGetApiRequest(WEB_API_BASE_URL: String, accessToken: String?): Response { val fullUrl = "$WEB_API_BASE_URL/api/todolist" val requestBuilder = Request.Builder() .url(fullUrl) .addHeader("Authorization", "Bearer $accessToken") .get() val request = requestBuilder.build() client.newCall(request).execute().use { response -> return response } } }
Kod ułatwia wykonywanie
GET
żądań do internetowego interfejsu API. Główną metodą jestperformGetApiRequest()
, która przyjmuje podstawowy adres URL internetowego interfejsu API i token dostępu jako parametry. Wewnątrz tej metody tworzy pełny adres URL, dołączając/api/todolist
go do podstawowego adresu URL. Następnie tworzy żądanie HTTP z odpowiednimi nagłówkami, w tym nagłówkiem autoryzacji z tokenem dostępu.Na koniec wykonuje żądanie synchronicznie przy użyciu metody OkHttp
newCall()
i zwraca odpowiedź. ObiektApiClient
obsługuje wystąpienieOkHttpClient
do obsługi żądań HTTP. Aby użyćOkHttpClient
polecenia , należy dodać zależnośćimplementation 'com.squareup.okhttp3:okhttp:4.9.0'
do pliku android Gradle.Upewnij się, że dołączysz instrukcje importowania. Program Android Studio powinien automatycznie dołączać instrukcje importowania.
Powiązana zawartość
- Logowanie użytkowników i wywoływanie chronionego internetowego interfejsu API w przykładowej aplikacji systemu Android (Kotlin)
- Logowanie użytkowników w przykładowej aplikacji mobilnej systemu Android (Kotlin) przy użyciu uwierzytelniania natywnego
- Samouczek: przygotowywanie aplikacji mobilnej systemu Android do uwierzytelniania natywnego