Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Van toepassing op: Werkforce-huurders
Externe huurders (meer informatie)
In deze zelfstudie leert u hoe u een toegangstoken verkrijgt en een API aanroept in uw mobiele Android-app. Met de systeemeigen verificatie-SDK van Microsoft Authentication Library (MSAL) voor Android kunt u meerdere toegangstokens verkrijgen met eenmalige aanmelding. Met deze mogelijkheid kunt u een of meer toegangstokens verkrijgen zonder dat een gebruiker zich opnieuw moet verifiëren.
In deze handleiding leert u:
- Een of meer toegangstokens verkrijgen.
- Een API aanroepen
Voorwaarden
- Voltooi de stappen in Zelfstudie: Inloggen toevoegen in Android-app met behulp van native authenticatie. In deze zelfstudie leert u hoe u gebruikers in uw Android-app kunt aanmelden met behulp van systeemeigen verificatie.
Een toegangstoken verkrijgen
Zodra de gebruiker zich heeft aangemeld, verkrijgt u een toegangstoken door de bereiken op te geven waarvoor het toegangstoken geldig is.
MSAL native authentication SDK ondersteunt meerdere toegangstokens, zodat u meerdere sets scopes kunt opgeven en vervolgens een toegangstoken kunt aanvragen voor elke set scopes.
Declareer en stel waarden in voor een set API-bereiken met behulp van het volgende codefragment:
companion object { // Set values for respective API scopes for their web API resources here, for example: ["api://<Resource_App_ID>/ToDoList.Read", "api://<Resource_App_ID>/ToDoList.ReadWrite"] // A list of scope for API 1 private val scopesForAPI1 = listOf<String>() // A list of scope for API 2 private val scopesForAPI2 = listOf<String>() }
Gebruikers aanmelden met behulp van het volgende codefragment:
CoroutineScope(Dispatchers.Main).launch { val parameters = NativeAuthSignInParameters(username = email) parameters.password = password val actionResult: SignInResult = authClient.signIn(parameters) if (actionResult is SignInResult.Complete) -> { // Perform operations after successful sign-in } else if (actionResult is SignInError) { // Handle sign-in errors } }
Haal een of meer toegangstokens op met behulp van het volgende codefragment:
CoroutineScope(Dispatchers.Main).launch { val accountResult = authClient.getCurrentAccount() when (accountResult) { is GetAccountResult.AccountFound -> { try { // Access token for API 1 val accessTokenOne = getAccessToken(accountResult.resultValue, scopesForAPI1) // Access token for API 2 val accessTokenTwo = getAccessToken(accountResult.resultValue, scopesForAPI2) // Proceed to make a call to an API } catch (e: Exception) { // Handle Exception } } is GetAccountResult.NoAccountFound -> { // Handle etAccountResult.NoAccountFound } is GetAccountError -> { // Handle GetAccountError } } }
Definieer de functie
getAccessToken()
, zoals wordt weergegeven in de volgende code:private suspend fun getAccessToken(accountState: AccountState, scopes: List<String>): String { val parameters = NativeAuthGetAccessTokenParameters() parameters.scopes = scopes val accessTokenState = accountState.getAccessToken(parameters) return if (accessTokenState is GetAccessTokenResult.Complete) { accessTokenState.resultValue.accessToken } else { throw Exception("Failed to get access token") } }
Een API aanroepen
Als u een API-aanroep wilt maken, gebruikt u het toegangstoken dat u hebt verkregen in Een toegangstoken verkrijgen en een API-URL:
Declareer en stel waarden in voor de API-URL's met behulp van het volgende codefragment:
companion object { // Set values for respective API scopes for web API resources here, for example: ["api://<Resource_App_ID>/ToDoList.Read", "api://<Resource_App_ID>/ToDoList.ReadWrite"] // A list of scope for API 1 private val scopesForAPI1 = listOf<String>() // A list of scope for API 2 private val scopesForAPI2 = listOf<String>() // Set the URL of first web API resource here private const val WEB_API_URL_1 = "Enter_URL_Of_First_Web_API" // Set the URL of second web API resource here private const val WEB_API_URL_2 = "Enter_URL_Of_Second_Web_API" }
Vervang het volgende:
-
Enter_URL_Of_First_Web_API
tijdelijke aanduiding met de volledige URL-waarde van uw eerste API. -
Enter_URL_Of_Second_Web_API
tijdelijke aanduiding met de volledige URL-waarde van uw tweede API.
-
Gebruik de volgende codefragmenten om een API aan te roepen:
// After you acquire an access token, use it to call an API val firstApiResponse = useAccessToken(WEB_API_URL_1, accessTokenOne) val secondApiResponse = useAccessToken(WEB_API_URL_2, accessTokenTwo) private suspend fun useAccessToken(WEB_API_URL: String, accessToken: String): Response { return withContext(Dispatchers.IO) { ApiClient.performGetApiRequest(WEB_API_URL, accessToken) } }
Definieer de functie
performGetApiRequest()
, zoals wordt weergegeven in de volgende code:object ApiClient { private val client = OkHttpClient() fun performGetApiRequest(WEB_API_URL: String, accessToken: String): Response { val requestBuilder = Request.Builder() .url(WEB_API_URL) .addHeader("Authorization", "Bearer $accessToken") .get() val request = requestBuilder.build() client.newCall(request).execute().use { response -> return response } } }
Aangepaste claimprovider configureren
Als u claims van een extern systeem wilt toevoegen aan het token dat is uitgegeven aan uw app, gebruikt u een aangepaste claimprovider. Een aangepaste claimprovider bestaat uit een aangepaste verificatie-extensie die een externe REST API aanroept om claims op te halen uit externe systemen.
Volg de stappen in Een aangepaste claimprovider configureren om claims van een extern systeem toe te voegen aan uw beveiligingstokens.