Mulai Cepat: Memasukkan pengguna dan memanggil Microsoft Graph API dari aplikasi ponsel
Dalam mulai cepat ini, Anda mengunduh dan menjalankan sampel kode yang menunjukkan bagaimana aplikasi Android dapat masuk ke pengguna dan mendapatkan token akses untuk memanggil Microsoft Graph API.
Lihat Cara kerja sampel untuk melihat ilustrasi.
Aplikasi harus diwakili oleh objek aplikasi di Azure Active Directory sehingga platform identitas Microsoft dapat memberikan token ke aplikasi Anda.
Prasyarat
- Akun Azure dengan langganan aktif. Buat akun gratis.
- Android Studio
- Android 16+
Langkah 1: Dapatkan contoh aplikasi
Langkah 2: Jalankan sampel
Pilih emulator, atau perangkat fisik Anda, dari dropdown perangkat Android Studio yang tersedia dan jalankan aplikasi.
Contoh aplikasi dimulai pada layar Mode Akun Tunggal. Cakupan default, user.read, disediakan secara default, yang digunakan saat membaca data profil Anda sendiri selama panggilan Microsoft Graph API. URL untuk panggilan Microsoft Graph API disediakan secara default. Anda dapat mengubah kedua hal ini jika Anda mau.

Gunakan menu aplikasi untuk mengubah antara mode satu dan beberapa akun.
Dalam mode satu akun, masuklah menggunakan akun kantor atau rumah:
- Pilih Dapatkan data grafik secara interaktif untuk meminta kredensial pengguna. Anda akan melihat output dari panggilan ke Microsoft Graph API di bagian bawah layar.
- Setelah masuk, pilih Dapatkan data grafik secara diam-diam untuk melakukan panggilan ke Microsoft Graph API tanpa meminta kredensial lagi kepada pengguna. Anda akan melihat output dari panggilan ke Microsoft Graph API di bagian bawah layar.
Dalam beberapa mode akun, Anda dapat mengulangi langkah yang sama. Selain itu, Anda dapat menghapus akun masuk, yang juga menghapus token cache untuk akun tersebut.
Cara kerja sampel
Kode diatur ke dalam fragmen yang menunjukkan cara menulis satu dan beberapa akun aplikasi MSAL. File kode diatur sebagai berikut:
| File | Menunjukkan |
|---|---|
| MainActivity | Mengelola UI |
| MSGraphRequestWrapper | Memanggil Microsoft Graph API menggunakan token yang disediakan oleh MSAL |
| MultipleAccountModeFragment | Menginisialisasi aplikasi multi-akun, memuat akun pengguna, dan mendapatkan token untuk memanggil Microsoft Graph API |
| SingleAccountModeFragment | Menginisialisasi aplikasi satu akun, memuat akun pengguna, dan mendapatkan token untuk memanggil Microsoft Graph API |
| res/auth_config_multiple_account.json | File konfigurasi beberapa akun |
| res/auth_config_single_account.json | File konfigurasi akun tunggal |
| Gradle Scripts/build.grade (Module:app) | Dependensi pustaka MSAL ditambahkan di sini |
Sekarang kita akan melihat file-file ini secara lebih rinci dan memanggil kode khusus MSAL di masing-masing.
Menambahkan MSAL ke aplikasi
MSAL (com.microsoft.identity.client) adalah pustaka yang digunakan untuk masuk pengguna dan meminta token yang digunakan untuk mengakses API yang dilindungi oleh platform identitas Microsoft. Gradle 3.0+ menginstal pustaka saat Anda menambahkan yang berikut ke Gradle Scripts>build.gradle (Module: app) di bawah Dependensi:
dependencies {
...
implementation 'com.microsoft.identity.client:msal:2.+'
...
}
Yang menginstruksikan Gradle untuk mengunduh dan membangun MSAL dari maven central.
Anda juga harus menambahkan referensi ke maven ke bagian repositori allprojects>bagian dari build.gradle (Module: app) seperti ini:
allprojects {
repositories {
mavenCentral()
google()
mavenLocal()
maven {
url 'https://pkgs.dev.azure.com/MicrosoftDeviceSDK/DuoSDK-Public/_packaging/Duo-SDK-Feed/maven/v1'
}
maven {
name "vsts-maven-adal-android"
url "https://identitydivision.pkgs.visualstudio.com/_packaging/AndroidADAL/maven/v1"
credentials {
username System.getenv("ENV_VSTS_MVN_ANDROIDADAL_USERNAME") != null ? System.getenv("ENV_VSTS_MVN_ANDROIDADAL_USERNAME") : project.findProperty("vstsUsername")
password System.getenv("ENV_VSTS_MVN_ANDROIDADAL_ACCESSTOKEN") != null ? System.getenv("ENV_VSTS_MVN_ANDROIDADAL_ACCESSTOKEN") : project.findProperty("vstsMavenAccessToken")
}
}
jcenter()
}
}
Impor MSAL
Impor yang relevan dengan perpustakaan MSAL adalah com.microsoft.identity.client.*. Misalnya, Anda akan melihat import com.microsoft.identity.client.PublicClientApplication;namespace untuk PublicClientApplication kelas, yang mewakili aplikasi klien publik Anda.
SingleAccountModeFragment.java
File ini menunjukkan cara membuat aplikasi MSAL satu akun dan memanggil Microsoft Graph API.
Aplikasi akun tunggal hanya digunakan oleh satu pengguna. Misalnya, Anda mungkin hanya memiliki satu akun yang Anda masuk ke aplikasi pemetaan.
Inisialisasi MSAL akun tunggal
Diauth_config_single_account.json, dalamonCreateView(), satu akunPublicClientApplication dibuat menggunakan informasi konfigurasi yang disimpan dalam auth_config_single_account.json file. Ini adalah cara Anda menginisialisasi pustaka MSAL untuk digunakan dalam aplikasi MSAL satu akun:
...
// Creates a PublicClientApplication object with res/raw/auth_config_single_account.json
PublicClientApplication.createSingleAccountPublicClientApplication(getContext(),
R.raw.auth_config_single_account,
new IPublicClientApplication.ISingleAccountApplicationCreatedListener() {
@Override
public void onCreated(ISingleAccountPublicClientApplication application) {
/**
* This test app assumes that the app is only going to support one account.
* This requires "account_mode" : "SINGLE" in the config json file.
**/
mSingleAccountApp = application;
loadAccount();
}
@Override
public void onError(MsalException exception) {
displayError(exception);
}
});
Masukkan pengguna
Dalam SingleAccountModeFragment.java, kode untuk masuk pengguna tersediainitializeUI(), di signInButtonklik handel.
Panggilan signIn() sebelum mencoba memperoleh token. signIn() berperilaku seolah-olah acquireToken() dipanggil, menghasilkan permintaan interaktif bagi pengguna untuk masuk.
Memasukkan pengguna adalah operasi asinkron. Panggil balik dilewatkan yang memanggil Microsoft Graph API dan memperbarui UI setelah pengguna masuk:
mSingleAccountApp.signIn(getActivity(), null, getScopes(), getAuthInteractiveCallback());
Keluarkan pengguna
Dalam SingleAccountModeFragment.java, kode untuk keluar pengguna yang ada di dalaminitializeUI(), di signOutButtonklik handel. Mengeluarkan pengguna merupakan operasi asinkron. Mengeluarkan pengguna juga menghapus cache token untuk akun tersebut. Panggil balik dibuat untuk memperbarui UI setelah akun pengguna keluar:
mSingleAccountApp.signOut(new ISingleAccountPublicClientApplication.SignOutCallback() {
@Override
public void onSignOut() {
updateUI(null);
performOperationOnSignOut();
}
@Override
public void onError(@NonNull MsalException exception) {
displayError(exception);
}
});
Dapatkan token secara interaktif atau diam-diam
Untuk menyajikan jumlah permintaan terkecil kepada pengguna, Biasanya Anda akan mendapatkan token secara diam-diam. Kemudian, jika ada kesalahan, upaya untuk mendapatkan token secara interaktif. Pertama kali aplikasi memanggilsignIn(), aplikasi secara efektif bertindak sebagai panggilan ke acquireToken(), yang akan meminta kredensial kepada pengguna.
Beberapa situasi saat pengguna mungkin diminta untuk memilih akun mereka, memasukkan kredensial mereka, atau menyetujui izin yang diminta aplikasi Anda adalah:
- Pertama kali pengguna masuk ke aplikasi
- Jika pengguna mengatur ulang kata sandi, mereka harus memasukkan kredensial mereka
- Jika persetujuan dicabut
- Jika aplikasi Anda secara eksplisit memerlukan persetujuan
- Ketika aplikasi Anda meminta akses ke sumber daya untuk pertama kalinya
- Ketika MFA atau kebijakan Akses Bersyarat lainnya diperlukan
Kode untuk mendapatkan token secara interaktif, berada di UI yang akan melibatkan pengguna, yang ada di dalam SingleAccountModeFragment.java, di initializeUI(), di callGraphApiInteractiveButton klik handel:
/**
* If acquireTokenSilent() returns an error that requires an interaction (MsalUiRequiredException),
* invoke acquireToken() to have the user resolve the interrupt interactively.
*
* Some example scenarios are
* - password change
* - the resource you're acquiring a token for has a stricter set of requirement than your Single Sign-On refresh token.
* - you're introducing a new scope which the user has never consented for.
**/
mSingleAccountApp.acquireToken(getActivity(), getScopes(), getAuthInteractiveCallback());
Jika pengguna sudah masuk, acquireTokenSilentAsync()memungkinkan aplikasi untuk meminta token secara diam-diam seperti yang ditunjukkan dalaminitializeUI(), dicallGraphApiSilentButton klik handler:
/**
* Once you've signed the user in,
* you can perform acquireTokenSilent to obtain resources without interrupting the user.
**/
mSingleAccountApp.acquireTokenSilentAsync(getScopes(), AUTHORITY, getAuthSilentCallback());
Memuat akun
Kode untuk memuat akun berada SingleAccountModeFragment.java di loadAccount(). Memuat akun pengguna adalah operasi asinkron, jadi fitur panggil balik untuk menangani ketika akun dimuat, diubah, atau kesalahan terjadi akan diteruskan ke MSAL. Kode berikut juga menangani onAccountChanged(), yang terjadi ketika akun dihapus, pengguna berubah ke akun lain, dan sebagainya.
private void loadAccount() {
...
mSingleAccountApp.getCurrentAccountAsync(new ISingleAccountPublicClientApplication.CurrentAccountCallback() {
@Override
public void onAccountLoaded(@Nullable IAccount activeAccount) {
// You can use the account data to update your UI or your app database.
updateUI(activeAccount);
}
@Override
public void onAccountChanged(@Nullable IAccount priorAccount, @Nullable IAccount currentAccount) {
if (currentAccount == null) {
// Perform a cleanup task as the signed-in account changed.
performOperationOnSignOut();
}
}
@Override
public void onError(@NonNull MsalException exception) {
displayError(exception);
}
});
Hubungi Microsoft Graph
Ketika pengguna masuk, panggilan ke Microsoft Graph dilakukan melalui permintaan HTTP callGraphAPI() yang didefinisikan dalam SingleAccountModeFragment.java. Fungsi ini adalah pembungkus yang menyederhanakan sampel dengan melakukan beberapa tugas seperti mendapatkan token akses dariauthenticationResult dan mengemas panggilan ke MSGraphRequestWrapper, dan menampilkan hasil panggilan.
private void callGraphAPI(final IAuthenticationResult authenticationResult) {
MSGraphRequestWrapper.callGraphAPIUsingVolley(
getContext(),
graphResourceTextView.getText().toString(),
authenticationResult.getAccessToken(),
new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
/* Successfully called graph, process data and send to UI */
...
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
...
}
});
}
auth_config_single_account.json
Ini adalah file konfigurasi untuk aplikasi MSAL yang menggunakan satu akun.
Lihat Memahami file konfigurasi MSAL Android untuk penjelasan tentang kolom ini.
Perhatikan keberadaan "account_mode" : "SINGLE", yang mengonfigurasi aplikasi ini untuk menggunakan satu akun.
"client_id" telah dikonfigurasi untuk menggunakan pendaftaran objek aplikasi yang dikelola Microsoft.
"redirect_uri"telah dikonfigurasi untuk menggunakan kunci masuk yang disediakan dengan sampel kode.
{
"client_id" : "0984a7b6-bc13-4141-8b0d-8f767e136bb7",
"authorization_user_agent" : "DEFAULT",
"redirect_uri" : "msauth://com.azuresamples.msalandroidapp/1wIqXSqBj7w%2Bh11ZifsnqwgyKrY%3D",
"account_mode" : "SINGLE",
"broker_redirect_uri_registered": true,
"authorities" : [
{
"type": "AAD",
"audience": {
"type": "AzureADandPersonalMicrosoftAccount",
"tenant_id": "common"
}
}
]
}
MultipleAccountModeFragment.java
File ini menunjukkan cara membuat aplikasi MSAL beberapa akun dan memanggil Microsoft Graph API.
Contoh aplikasi beberapa akun adalah aplikasi email yang memungkinkan Anda bekerja dengan beberapa akun pengguna seperti akun kantor dan akun pribadi.
Inisialisasi MSAL beberapa akun
Dalam MultipleAccountModeFragment.java file, dalam onCreateView(), objek aplikasi beberapa akun (IMultipleAccountPublicClientApplication) dibuat menggunakan informasi konfigurasi yang disimpan di auth_config_multiple_account.json file:
// Creates a PublicClientApplication object with res/raw/auth_config_multiple_account.json
PublicClientApplication.createMultipleAccountPublicClientApplication(getContext(),
R.raw.auth_config_multiple_account,
new IPublicClientApplication.IMultipleAccountApplicationCreatedListener() {
@Override
public void onCreated(IMultipleAccountPublicClientApplication application) {
mMultipleAccountApp = application;
loadAccounts();
}
@Override
public void onError(MsalException exception) {
...
}
});
Objek MultipleAccountPublicClientApplication yang dibuat disimpan dalam variabel anggota kelas sehingga dapat digunakan untuk berinteraksi dengan pustaka MSAL untuk memperoleh token dan memuat dan menghapus akun pengguna.
Memuat akun
Beberapa aplikasi akun biasanya memanggil getAccounts() untuk memilih akun yang akan digunakan untuk operasi MSAL. Kode untuk memuat akun ada di file MultipleAccountModeFragment.java, di loadAccounts(). Memuat akun pengguna adalah operasi asinkron. Jadi fitur panggil balik akan menangani situasi ketika akun dimuat, diubah, atau kesalahan terjadi.
/**
* Load currently signed-in accounts, if there's any.
**/
private void loadAccounts() {
if (mMultipleAccountApp == null) {
return;
}
mMultipleAccountApp.getAccounts(new IPublicClientApplication.LoadAccountsCallback() {
@Override
public void onTaskCompleted(final List<IAccount> result) {
// You can use the account data to update your UI or your app database.
accountList = result;
updateUI(accountList);
}
@Override
public void onError(MsalException exception) {
displayError(exception);
}
});
}
Dapatkan token secara interaktif atau diam-diam
Beberapa situasi saat pengguna mungkin diminta untuk memilih akun mereka, memasukkan kredensial mereka, atau menyetujui izin yang diminta aplikasi Anda adalah:
- Pertama kali pengguna masuk ke aplikasi
- Jika pengguna mengatur ulang kata sandi, mereka harus memasukkan kredensial mereka
- Jika persetujuan dicabut
- Jika aplikasi Anda secara eksplisit memerlukan persetujuan
- Ketika aplikasi Anda meminta akses ke sumber daya untuk pertama kalinya
- Ketika MFA atau kebijakan Akses Bersyarat lainnya diperlukan
Beberapa aplikasi akun biasanya harus memperoleh token secara interaktif, yaitu dengan UI yang melibatkan pengguna, dengan panggilan ke acquireToken(). Kode untuk mendapatkan token secara interaktif ada dalam MultipleAccountModeFragment.java file diinitializeUI(), di callGraphApiInteractiveButtonklik handel:
/**
* Acquire token interactively. It will also create an account object for the silent call as a result (to be obtained by getAccount()).
*
* If acquireTokenSilent() returns an error that requires an interaction,
* invoke acquireToken() to have the user resolve the interrupt interactively.
*
* Some example scenarios are
* - password change
* - the resource you're acquiring a token for has a stricter set of requirement than your SSO refresh token.
* - you're introducing a new scope which the user has never consented for.
**/
mMultipleAccountApp.acquireToken(getActivity(), getScopes(), getAuthInteractiveCallback());
Aplikasi seharusnya tidak mengharuskan pengguna untuk masuk setiap kali mereka meminta token. Jika pengguna telah masuk, acquireTokenSilentAsync() memungkinkan aplikasi untuk meminta token tanpa meminta pengguna, seperti yang ditunjukkan dalam MultipleAccountModeFragment.java file, di dalam initializeUI() di callGraphApiSilentButton klik handel:
/**
* Performs acquireToken without interrupting the user.
*
* This requires an account object of the account you're obtaining a token for.
* (can be obtained via getAccount()).
*/
mMultipleAccountApp.acquireTokenSilentAsync(getScopes(),
accountList.get(accountListSpinner.getSelectedItemPosition()),
AUTHORITY,
getAuthSilentCallback());
Menghapus akun
Kode untuk menghapus akun, dan token cache untuk akun, ada di dalam MultipleAccountModeFragment.java file di initializeUI()dalam handel untuk tombol hapus akun. Sebelum Anda dapat menghapus akun, Anda memerlukan objek akun, yang Anda peroleh dari metode MSAL seperti getAccounts() dan acquireToken(). Karena menghapus akun adalah operasi asinkron, onRemoved panggil balik diberikan untuk memperbarui UI.
/**
* Removes the selected account and cached tokens from this app (or device, if the device is in shared mode).
**/
mMultipleAccountApp.removeAccount(accountList.get(accountListSpinner.getSelectedItemPosition()),
new IMultipleAccountPublicClientApplication.RemoveAccountCallback() {
@Override
public void onRemoved() {
...
/* Reload account asynchronously to get the up-to-date list. */
loadAccounts();
}
@Override
public void onError(@NonNull MsalException exception) {
displayError(exception);
}
});
auth_config_multiple_account.json
Ini adalah file konfigurasi untuk aplikasi MSAL yang menggunakan beberapa akun.
Lihat Memahami file konfigurasi MSAL Android untuk penjelasan dari berbagai bidang.
Tidak seperti file konfigurasi auth_config_single_account.json, file konfigurasi ini memiliki "account_mode" : "MULTIPLE""account_mode" : "SINGLE"karena ini adalah aplikasi beberapa akun.
"client_id" telah dikonfigurasi untuk menggunakan pendaftaran objek aplikasi yang dikelola Microsoft.
"redirect_uri"telah dikonfigurasi untuk menggunakan kunci masuk yang disediakan dengan sampel kode.
{
"client_id" : "0984a7b6-bc13-4141-8b0d-8f767e136bb7",
"authorization_user_agent" : "DEFAULT",
"redirect_uri" : "msauth://com.azuresamples.msalandroidapp/1wIqXSqBj7w%2Bh11ZifsnqwgyKrY%3D",
"account_mode" : "MULTIPLE",
"broker_redirect_uri_registered": true,
"authorities" : [
{
"type": "AAD",
"audience": {
"type": "AzureADandPersonalMicrosoftAccount",
"tenant_id": "common"
}
}
]
}
Bantuan dan dukungan
Jika Anda memerlukan bantuan, ingin melaporkan masalah, atau ingin mempelajari opsi dukungan, lihat Bantuan dan dukungan bagi pengembang.
Langkah berikutnya
Beralih ke tutorial Android di mana Anda membuat aplikasi Android yang mendapatkan token akses dari platform identitas Microsoft dan menggunakannya untuk memanggil Microsoft Graph API.
Di mulai cepat ini, Anda mengunduh dan menjalankan sampel kode yang menunjukkan bagaimana aplikasi iOS atau macOS asli dapat masuk pengguna dan mendapatkan token akses untuk memanggil Microsoft Graph API.
Mulai cepat berlaku untuk app iOS dan macOS. Beberapa langkah hanya diperlukan untuk aplikasi iOS dan akan ditunjukkan seperti itu.
Prasyarat
- Akun Azure dengan langganan aktif. Buat akun gratis.
- XCode 10+
- iOS 10+
- macOS 10.12+
Cara kerja sampel
Mendaftar dan mengunduh aplikasi mulai cepat Anda
Anda memiliki dua opsi untuk memulai aplikasi mulai cepat Anda:
- [Ekspres] Opsi 1: Mendafttar dan mengonfigurasi aplikasi secara otomatis lalu mengunduh sampel kode
- [Manual] Opsi 2: Mendaftar dan mengonfigurasi sampel aplikasi dan kode secara manual
Opsi 1: Mendafttar dan mengonfigurasi aplikasi secara otomatis lalu mengunduh sampel kode
Langkah 1: Daftarkan aplikasi
Untuk mendaftarkan aplikasi Anda,
- Buka pengalaman mulai cepat portal Microsoft Azure - Pendaftaran aplikasi.
- Masukkan nama aplikasi dan pilih Daftar.
- Ikuti petunjuk untuk mengunduh dan mengonfigurasi aplikasi baru secara otomatis hanya dengan satu klik.
Opsi 2: Mendaftar dan mengonfigurasi sampel aplikasi dan kode secara manual
Langkah 1: Daftarkan aplikasi
Untuk mendaftarkan aplikasi Anda dan menambahkan informasi pendaftaran aplikasi ke solusi Anda secara manual, ikuti langkah-langkah berikut:
- Masuk ke portal Azure.
- Jika Anda memiliki akses ke beberapa penyewa, gunakan filter Direktori + langganan
di menu atas untuk beralih penyewa aplikasinya ingin Anda daftarkan. - Cari dan pilih Microsoft Azure Active Directory.
- Di bagian Kelola, pilih Pendaftaran aplikasi>Pendaftaran baru.
- Masukkan Nama untuk aplikasi Anda. Pengguna aplikasi mungkin melihat nama ini, dan Anda dapat mengubahnya nanti.
- Pilih Daftarkan.
- Di bawah Kelola, pilih Autentikasi>Tambahkan Platform>iOS.
- Masukkan Pengidentifikasi Bundel untuk aplikasi Anda. Pengidentifikasi bundel adalah string unik yang secara unik mengidentifikasi aplikasi Anda, misalnya
com.<yourname>.identitysample.MSALMacOS. Catat nilai yang Anda gunakan. Perhatikan konfigurasi iOS juga berlaku untuk aplikasi macOS. - Pilih Konfigurasi dan simpan detail Konfigurasi MSAL untuk mulai cepat nanti.
- Pilih Selesai.
Langkah 2: Unduh contoh proyek
Langkah 3: Instal dependensi
- Ekstrak file zip.
- Di jendela terminal, navigasi ke folder dengan sampel kode yang diunduh dan jalankan
pod installuntuk menginstal pustaka MSAL terbaru.
Langkah 4: Konfigurasi proyek Anda
Jika Anda memilih Opsi 1 di atas, Anda dapat melewati langkah-langkah ini.
Buka proyek di XCode.
Edit ViewController.swift dan ganti baris yang dimulai dengan 'let kClientID' dengan cuplikan kode berikut. Ingatlah untuk memperbarui nilai
kClientIDdengan clientID yang Anda simpan saat mendaftarkan aplikasi di portal sebelumnya di mulai cepat ini:let kClientID = "Enter_the_Application_Id_Here"Jika Anda membuat aplikasi untuk cloud nasional Azure AD, ganti baris yang dimulai dengan 'let kGraphEndpoint' dan 'let kAuthority' dengan titik akhir yang benar. Untuk akses global, gunakan nilai default:
let kGraphEndpoint = "https://graph.microsoft.com/" let kAuthority = "https://login.microsoftonline.com/common"Titik akhir lainnya didokumentasikan di sini. Misalnya, untuk menjalankan mulai cepat dengan Azure AD Jerman, gunakan berikut ini:
let kGraphEndpoint = "https://graph.microsoft.de/" let kAuthority = "https://login.microsoftonline.de/common"Buka pengaturan proyek. Di bagian Identitas, masukkan Pengidentifikasi Bundel yang Anda masukkan ke portal.
Klik kanan Info.plist dan pilih Buka Sebagai>Kode Sumber.
Di bawah dict root node, ganti
Enter_the_bundle_Id_Heredengan Id Bundel yang Anda gunakan di portal. Perhatikan prefiksmsauth.pada string.<key>CFBundleURLTypes</key> <array> <dict> <key>CFBundleURLSchemes</key> <array> <string>msauth.Enter_the_Bundle_Id_Here</string> </array> </dict> </array>Membuat dan menjalankan aplikasi!
Informasi Lebih Lanjut
Baca bagian ini untuk mempelajari lebih lanjut tentang mulai cepat ini.
Mendapatkan MSAL
MSAL (MSAL.framework) adalah pustaka yang digunakan untuk masuk pengguna dan meminta token yang digunakan untuk mengakses API yang dilindungi oleh platform identitas Microsoft. Anda dapat menambahkan MSAL ke aplikasi Anda menggunakan proses berikut:
$ vi Podfile
Tambahkan yang berikut ke podfile ini (dengan target proyek Anda):
use_frameworks!
target 'MSALiOS' do
pod 'MSAL'
end
Jalankan perintah instalasi CocoaPods:
pod install
Menginisialisasi MSAL
Anda bisa menambahkan referensi untuk MSAL dengan menambahkan kode berikut:
import MSAL
Lalu, inisialisasi MSAL menggunakan kode berikut:
let authority = try MSALAADAuthority(url: URL(string: kAuthority)!)
let msalConfiguration = MSALPublicClientApplicationConfig(clientId: kClientID, redirectUri: nil, authority: authority)
self.applicationContext = try MSALPublicClientApplication(configuration: msalConfiguration)
Di mana: Deskripsi clientIdID Aplikasi dari aplikasi yang terdaftar di portal.azure.com authorityPlatform identitas Microsoft. Di kebanyakan kasus ini akan https://login.microsoftonline.com/commonredirectUriURI pengalihan aplikasi. Anda dapat meneruskan 'nihil' untuk menggunakan nilai default, atau URI pengalihan kustom Anda.
Hanya untuk iOS, persyaratan aplikasi tambahan
Aplikasi Anda juga harus memiliki hal berikut di aplikasi AndaAppDelegate. Yang memungkinkan MSAL SDK menangani respons token dari aplikasi broker Auth ketika Anda melakukan autentikasi.
func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool {
return MSALPublicClientApplication.handleMSALResponse(url, sourceApplication: options[UIApplication.OpenURLOptionsKey.sourceApplication] as? String)
}
Catatan
Di iOS 13+, jika Anda mengadopsi UISceneDelegate alih-alih UIApplicationDelegate, meletakkan kode ini scene:openURLContexts: ke dalam callback sebagai gantinya (Lihat dokumentasi Apple).
Jika Anda mendukung UISceneDelegate dan UIApplicationDelegate untuk kompatibilitas dengan iOS yang lebih lama, callback MSAL perlu ditempatkan ke kedua tempat.
func scene(_ scene: UIScene, openURLContexts URLContexts: Set<UIOpenURLContext>) {
guard let urlContext = URLContexts.first else {
return
}
let url = urlContext.url
let sourceApp = urlContext.options.sourceApplication
MSALPublicClientApplication.handleMSALResponse(url, sourceApplication: sourceApp)
}
Akhirnya, aplikasi Anda harus memiliki LSApplicationQueriesSchemes entri di Info.plist Anda bersama CFBundleURLTypes. Sampel datang dengan disertai entri.
<key>LSApplicationQueriesSchemes</key>
<array>
<string>msauthv2</string>
<string>msauthv3</string>
</array>
Masuk pengguna & meminta token
MSAL memiliki dua metode yang digunakan untuk memperoleh token: acquireToken dan acquireTokenSilent.
acquireToken: Mendapatkan token secara interaktif
Beberapa situasi mengharuskan pengguna untuk berinteraksi dengan platform identitas Microsoft. Dalam kasus ini, pengguna akhir mungkin diharuskan untuk memilih akun mereka, memasukkan kredensial mereka, atau menyetujui izin aplikasi Anda. Misalnya,
- Pertama kali pengguna masuk ke aplikasi
- Jika pengguna mengatur ulang kata sandi, mereka harus memasukkan kredensial mereka
- Ketika aplikasi Anda meminta akses ke sumber daya untuk pertama kalinya
- Ketika MFA atau kebijakan Akses Bersyarat lainnya diperlukan
let parameters = MSALInteractiveTokenParameters(scopes: kScopes, webviewParameters: self.webViewParamaters!)
self.applicationContext!.acquireToken(with: parameters) { (result, error) in /* Add your handling logic */}
Di mana: Deskripsi scopesBerisi cakupan yang diminta (yaitu, untuk [ "user.read" ]Microsoft Graph atau[ "<Application ID URL>/scope" ]untuk API web kustom (api://<Application ID>/access_as_user)
acquireTokenSilent: Mendapatkan token akses secara diam-diam
Aplikasi seharusnya tidak mengharuskan pengguna mereka untuk masuk setiap kali mereka meminta token. Jika pengguna sudah masuk, metode ini memungkinkan aplikasi untuk meminta token secara diam-diam.
self.applicationContext!.getCurrentAccount(with: nil) { (currentAccount, previousAccount, error) in
guard let account = currentAccount else {
return
}
let silentParams = MSALSilentTokenParameters(scopes: self.kScopes, account: account)
self.applicationContext!.acquireTokenSilent(with: silentParams) { (result, error) in /* Add your handling logic */}
}
Di mana: Deskripsi scopesBerisi cakupan yang diminta (yaitu, untuk [ "user.read" ]Microsoft Graph atau[ "<Application ID URL>/scope" ]untuk API web kustom (api://<Application ID>/access_as_user)accountAkun yang diminta oleh token. Mulai cepat ini diperuntukkan untuk satu aplikasi akun. Jika ingin membuat aplikasi multi-akun, Anda harus menentukan logika untuk mengidentifikasi akun mana yang digunakan untuk permintaan token menggunakan accountsFromDeviceForParameters:completionBlock:dan meneruskan dengan benaraccountIdentifier
Bantuan dan dukungan
Jika Anda memerlukan bantuan, ingin melaporkan masalah, atau ingin mempelajari opsi dukungan, lihat Bantuan dan dukungan bagi pengembang.
Langkah berikutnya
Beralih ke tutorial langkah demi langkah di mana Anda membangun aplikasi iOS atau macOS yang mendapatkan token akses dari platform identitas Microsoft dan menggunakannya untuk memanggil Microsoft Graph API.