Microsoft Graph OAuthOutlook ve Microsoft 365 Posta Kutularını Kimlik Doğrulama
Microsoft Graph OAuth'a 2026 yönelik eksiksiz bir kılavuz için SaaS geliştiricileri. Microsoft Entra uygulama kaydı, yetkilendirme uç noktaları, Posta kapsamları, vekalet edilen vs. uygulama izinleri, yönetici onayı, kimlik doğrulama kodu + PKCE, yenileme belirteci döndürme, AADSTS hata kodları ve Unipile'ın 5 haftalık OAuth tesisatını 5 dakikada nasıl ortadan kaldırdığını kapsar.
İthalat istekleri
# 1. Adım: Barındırılan kimlik doğrulama bağlantısı oluştur
response = requests.POST(
"https://apiXXX.unipile.com:XXX
/api/v1/hosted/accounts/link",
başlıklar="X-API-ANAHTAR": api_anahtar},
json={
"tip": "oluştur",
"sağlayıcılar": ["MİKROSOFT"],
"api_urlsi": veritabanı_bağlantı_tanımlayıcınız,
"geçerlilikSüresi": "31-12-2026T23:59:59Z"
}
)
# 2. Adım: Kullanıcıyı URL'ye yönlendirin
auth_url = response.json()["url"]
# Unipile, OAuth akışının tamamını yönetir
# (Entra, kapsamlar, jetonlar ve yenileme dahil)2026'da Microsoft Graph OAuth Neden Pazarlıksız Bir Hale Geliyor
Eğer SaaS uygulamanız Outlook veya Microsoft 365 e-postalarını okuyor, gönderiyor veya senkronize ediyorsa, Microsoft Graph OAuth artık isteğe bağlı değil. Üç büyük kullanımdan kaldırma, Temel Kimlik Doğrulamayı, eski protokolleri ve uygulama parolalarını geçersiz kılmıştır. Microsoft Graph API aracılığıyla OAuth 2.0, tek desteklenen yoldur.
Microsoft'un Desteklediği 3 OAuth Akışı (ve SaaS'ın İhtiyacı Olan)
Microsoft'un kimlik platformu birkaç OAuth 2.0 yetkilendirme türünü destekler. Yanlış olanı seçmek, boşa harcanan mühendislik zamanının yaygın bir nedenidir. İşte kullanıcılar adına e-postaya erişen SaaS uygulamaları için ayrıntılı açıklama.
Microsoft Entra Uygulama Kaydı: 7 Adım
Uygulamanızın OAuth belirteçleri isteyebilmesinden önce, Microsoft Entra Kimliği'nde (eski adıyla Azure Active Directory) kayıtlı bir uygulamanız olması gerekir. İşte alan değerlerinin hangilerinin önemli olduğu ve hangilerinin kozmetik olduğu da dahil olmak üzere tam adımlar.
portal.azure.com, git Microsoft Entra ID (üst çubukta ara), sonra Uygulama kayıtları, sonra tıklayın + Yeni kayıt. Görün Tam Microsoft OAuth belgelendirmesi ek bağlam için.Herhangi bir organizasyon dizinindeki hesaplar (Herhangi bir Microsoft Entra ID kiracısı - Çok kiracılı) ve kişisel Microsoft hesapları. Bu, şuna karşılık gelir: /yaygın yetkilendirme uç noktası./organizasyonlar yetkiyi azaltır ve onay alanınızı daraltır. Yetki uç noktaları hakkında daha fazlası sayfa 4'te.Web sunucu tarafı uygulamalar için. Kullan Tek Sayfa Uygulaması (SPA) istemci taraflı akışlar için (PKCE'yi otomatik olarak etkinleştirir).https://app.yourproduct.com/auth/microsoft/callback. Tam eşleşme gerekli, herhangi bir sapma AADSTS50011'e neden olur.http://localhost:3000/callback) ancak üretim URI'leri HTTPS kullanmalıdır. İkisini ayrı ayrı kaydedin.Mail.Read, çevrimdışı_erişim, açık kimlik, profilMail.ReadWrite, Mail.Gönder, çevrimdışı_erişim, açık kimlik, profilclient_id tüm kimlik doğrulama isteklerinde parametre./yaygın bunun yerine, ancak bu değeri yönetici onay URL'leri için saklayın.Doğru Microsoft Yetkilendirme Uç Noktasını Seçmek
OAuth isteklerinizde kullandığınız yetki URL'si, hangi tür Microsoft hesaplarının kimlik doğrulaması yapabileceğini ve hangi belirteçleri alacağınızı belirler. Bunu yanlış yapmak, bazı kullanıcıların hiç kimlik doğrulaması yapamaması gibi sessiz başarısızlıklara neden olur.
| Yetki URL'si | Kabul eder | Kullanım Örneği | Uyarılar |
|---|---|---|---|
| /yaygınEn Çok SaaS | Microsoft Entra (iş/okul) ve kişisel Microsoft hesapları (Outlook.com, Hotmail, Live) | Tüm Microsoft kullanıcılarına hizmet veren çok kiracılı SaaS. Tek bir uç nokta tüm kullanıcı tabanınıza hizmet verir. | Tokenler kendi kiracınız tarafından değil, her kullanıcının ev sahibi kiracısı tarafından verilir. Jeton doğrulaması, kiracıya özgü yayıncıyı kullanmalı veya birden çok yayıncıyı kabul etmelidir. Koşullu Erişim ilkeleri zorlanamaz. |
| /organizasyonlar | Yalnızca Microsoft Entra ID hesapları (iş/okul). Kişisel Microsoft hesapları yok. | Yalnızca kurumsal müşterilere yönelik, asla tüketici Outlook.com kullanıcılarını hedeflemeyen B2B SaaS. | Bireysel Microsoft hesaplarına sahip kullanıcılar bir hata alacaktır. Daha basit belirteç doğrulama (tek veren deseni kabul edilebilir). |
| tüketiciler | Yalnızca kişisel Microsoft hesapları (Outlook.com, Hotmail, Live). | Kişisel gelen kutularını hedefleyen tüketici uygulamaları. B2B SaaS için nadir. | Kurumsal Microsoft 365 hesapları reddediliyor. SaaS iş kullanıcılarına hizmet vermek için kullanışlı değil. |
| /{kiracı-kimliği} | Yalnızca belirli bir Microsoft Entra kiracısındaki hesaplar. | Tek kiracılı dahili araçlar (kendi şirketinizin uygulaması). Belirli bir kiracıyı hedefleyen yönetici onay akışları. Yönlendirme URL desenindeki yönetici onayı için de kullanılır. | Diğer kiracıların kullanıcıları reddediliyor. Yalnızca dahili uygulamalar veya kasıtlı olarak tek bir müşterinin kiracısına kilitlendiğinde uygundur. |
/yaygın uç nokta, the issu JWT'deki (verenin) iddiası ise https://login.microsoftonline.com/{tenantId}/v2.0 nerede {tenantId} kullanıcıya göre değişir. JWT doğrulama kütüphanenizi, eşleşen herhangi bir yayıncıyı kabul edecek şekilde yapılandırın https://login.microsoftonline.com/{tenantId}/v2.0 sabit bir yayıncı dizgisi yerine.Microsoft Graph Posta Kapsamları: Ayrıntılı Döküm
Microsoft Graph, uygulamanızın neler yapabileceğini denetlemek için izin kapsamlarını kullanır. Çok fazla kapsam istemek, onay ekranındaki sürtünmeyi artırır ve dönüşüm oranını düşürür. Çok az istemek ise çalışma zamanı hatalarına neden olur. İşte bilmeniz gereken tüm Posta kapsamları.
| Kapsam | Tip | Ne sağlar | Yönetici onayı? |
|---|---|---|---|
| Mail.Read | Devredilen | Kimliği doğrulanmış kullanıcının gelen kutusundaki tüm mesajları okuyun. Üstbilgileri, gövdeyi, ekleri içerir. Salt okunur - değiştiremez veya gönderemez. | Kullanıcı |
| Mail.TemelOkuma | Devredilen | Sınırlı mesaj özellikleri okunabilir: konu, gönderen, alıcılar, tarih. Mesaj gövdesi veya ekleri okunamıyor. Tam içerik erişimi olmadan hafif gelen kutusu listeleme için kullanışlıdır. | Kullanıcı |
| Mail.ReadWrite | Devredilen | Tüm iletileri oku ve değiştir. İleti ve klasör oluşturma, güncelleme, silme işlemleri dahildir. Mail.Read süpersetidir - ikisini birden istemeyin. | Kullanıcı |
| Mail.Gönder | Devredilen | Kimliği doğrulanmış kullanıcı olarak e-posta gönderin. Mail.ReadWrite izniniz olsa bile gereklidir - gönderme, Microsoft Graph'ta ayrı bir izindir. | Kullanıcı |
| Mail.Okunan.Paylaşılan | Devredilen | Paylaşılan posta kutularındaki veya kimliği doğrulanmış kullanıcının erişim izni aldığı diğer kullanıcıların posta kutularındaki e-postaları okuyun. Kullanıcının kendi posta kutusunu okumak için değildir. | Kullanıcı |
| Mail.ReadWrite.Shared | Devredilen | Erişimi olan paylaşılan posta kutularındaki e-postaları oku ve değiştir. | Kullanıcı |
| Mail.Gönder.Paylaşılan | Devredilen | Ortak posta kutularından e-posta gönderin veya başka bir kullanıcı adına gönderin (eğer kullanıcı erişim izni verdiyse). | Kullanıcı |
| çevrimdışı_erişim | Devredilen | Microsoft'u bir yenileme belirteci (refresh token) çıkarması için yönlendirir. Bunun olmadan yalnızca yenilenmesi mümkün olmayan, kısa ömürlü bir erişim belirteci alırsınız. SaaS uygulamaları için her zaman gereklidir. | Kullanıcı |
| açık kimlik | Devredilen | Temel kullanıcı kimliğiyle bir kimlik belirteci döndürür. Ayrı bir /me API çağrısı yapmadan kimin kimliğini doğrulamak istediğinizi bilmeniz gerekiyorsa gereklidir. | Kullanıcı |
| profil | Devredilen | ID belirtecine isim ve tercih edilen kullanıcı adı talepleri ekler. Genellikle openid ile birlikte dahil edilir. | Kullanıcı |
| Mail.Read (Uygulama) | Uygulama | Kullanıcı etkileşimi olmadan kiracıdaki tüm posta kutularındaki tüm postaları okur. Arka plan hizmetleri tarafından kullanılır. Kiracı yöneticisi onayı gerektirir. | Yönetici gerekli |
| Posta.OkumaYazma (Uygulama) | Uygulama | Tüm kiracı posta kutularındaki tüm e-postaları oku ve yaz. Çok geniş izin. Yalnızca açık kiracı yöneticisi onayı ile güvenilir dahili araçlar için. | Yönetici gerekli |
kapsam=Mail.Readçevrimdışı_erişimopenidprofil
kapsam=Mail.ReadWriteMail.Sendçevrimdışı_erişimopenidprofil
Yetkiler Devredildi vs. Uygulama Yetkileri: Ne Zaman Hangisi Uygulanmalı
Microsoft Graph iki temel olarak farklı izin modeli kullanır. Çoğu SaaS geliştiricisi yanlış olanı varsayılan olarak kullanır, bu da gereksiz yönetici onayı gereksinimlerine ve bozuk bir kullanıcı deneyimine yol açar. Her birinin ne zaman kullanılacağı tam olarak burada açıklanmıştır.
Doğrulama Kodu + PKCE: Adım Adım Curl Örnekleri
İşte PKCE ile birlikte eksiksiz Microsoft Graph OAuth 2.0 Yetkilendirme Kodu akışı, kod doğrulayıcısının oluşturulmasından belirteçlerin değiştirilmesine kadar. Bunlar, yığınınıza doğrudan uyarlayabileceğiniz üretim düzeyinde örneklerdir.
İthalat os, base64, hashlib
# 1. code_verifier oluştur (43-128 karakter, URL uyumlu base64)
kod_doğrulayıcı = base64.urlsafe_b64encode(
işletim sistemi.rastgele sayı(32)
).çöz('utf-8').sağdan sil('=')
# 2. code_challenge = BASE64URL(SHA256(code_verifier))
kod_yarışması = base64.urlsafe_b64encode(
hashlib.sha256kod_doğrulayıcı.kodlamak('utf-8')).sindirim()
).çöz('utf-8').sağdan sil('=')
# code_verifier değerini oturumda saklayın – 4. adımda buna ihtiyacınız olacak
# Yetkilendirme URL'sinde code_challenge değerini gönderkod - yetkilendirme kodu istiyorçevrimdışı_erişim yenileme belirteçleri için.S256 - her zaman SHA-256 kullan, asla düz metin kullanma# Yetki URL'sini oluştur (okunabilirlik için biçimlendirilmiş)
AUTH_URL="https://login.microsoftonline.com/common/oauth2/v2.0/authorize
?istemci_kimliği=SENİN_İSTEMCİ_KİMLİĞİN
&yanıt_türü=kod
&redirect;_uri=https://app.com/auth/ms/cb
&scope;=Mail.ReadWriteMail.Sendoffline_access
&durum=RANDOM_STATE_VALUE
&code_challenge=SENİN_KOD_MEYDAN_OKUMAN
&kod_sorgusu_yöntemi=S256"
# Kullanıcıyı $AUTH_URL adresine yönlendir
# Microsoft, oturum açma, çok faktörlü kimlik doğrulama ve onay ekranını yönetir
# Başarılı olduğunda: redirect_uri?code=AUTH_CODE&state;=...kod sorgu parametresi. Doğrulayın eyalet Parametre gönderdiğinizle eşleşiyor. Kod 10 dakika içinde geçerliliğini yitirecektir - hemen 4. adımda değiştirin.# Jetonlar için değişim yetkilendirme kodu
curl -X POSTA "https://login.microsoftonline.com/common/oauth2/v2.0/token" \
-H "İçerik-Türü: uygulama/x-www-form-urlencoded" \
-d "client_id=SENIN_CLIENT_ID" \
-d "client_secret=GİZLİ_KODUNUZ" \
-d "grant_type=yetkilendirme_kodu" \
-d "kod=AUTH_CODE_FROM_CALLBACK" \
-d "yönlendirme_uygulaması=https://app.com/auth/ms/cb" \
-d "code_verifier=SENİN_KOD_DOĞRULAYICIN" \
-d "scope=Posta.OkuYaz Posta.Gönder çevrimdışı_erişim"{
"token_türü": "Taşıyıcı",
"kapsam": "Mail.ReadWrite Mail.Send offline_access",
"geçerlilik_süresi": 3600,
"erişim_belirteci": "eyJ0eXAiOiJKV1Qi...",
"yenileme_jetonu": "0.ArOaı7W...",
"kimlik_jetonu": "eyJ0eXAi..."
}Yenileme Jetonu Yönetimi: Rotasyon, Süre Sonu ve Koşullu Erişim
Microsoft Graph yenileme belirteçleri uzun ömürlüdür ancak kalıcı değildir. Çeşitli koşullar onları sessizce geçersiz kılabilir. Bu uç durumları anlamak, üretim düzeyinde bir Microsoft OAuth entegrasyonunu, kurumsal kullanıcılar için rastgele bozulan bir entegrasyondan ayıran şeydir.
geçersiz_hibe Hataları zarifçe ele al ve yeniden kimlik doğrulaması iste.geçersiz_hibe hata.geçersiz_hibe. Bu beklenen bir davranıştır - bunu bağlantılı hesabı yeniden yetkilendirme gerektiren olarak işaretleyerek ele alın.# Kaydedilmiş yenileme jetonunu kullanarak erişim jetonunu yenile
curl -X POSTA "https://login.microsoftonline.com/common/oauth2/v2.0/token" \
-H "İçerik-Türü: uygulama/x-www-form-urlencoded" \
-d "client_id=SENIN_CLIENT_ID" \
-d "client_secret=GİZLİ_KODUNUZ" \
-d "grant_type=refresh_token" \
-d "yenileme_tokeni=SAKLANAN_YENILEME_TOKENI" \
-d "scope=Posta.OkuYaz Posta.Gönder çevrimdışı_erişim"
# Yanıtta her zaman yeni bir refresh_token olup olmadığını kontrol edin.
# Varsa, depolanan parçayı derhal değiştirin.
# "invalid_grant" hatası alırsanız, kullanıcıdan yeniden kimlik doğrulaması yapmasını isteyin.Yaygın AADSTS Hataları Açıklamaları
Microsoft Graph OAuth hataları tutarlı bir AADSTS hata kodu desenini izler. İşte geliştirme ve üretim sırasında karşılaşacağınız en yaygın olanlar, kesin kök nedenleri ve düzeltmeleri.
| Hata Kodu | Bu ne anlama geliyor | Ana neden ve düzeltme |
|---|---|---|
| AADSTS65001 hatası, kimlik doğrulama isteğinin zaman aşımına uğradığı veya iptal edildiği anlamına gelir. | İstenen kapsamların bir veya birkaçı için onay verilmedi | Kullanıcı, uygulamanızın kapsamlarına onay vermedi veya bir kiracı yöneticisi, uygulamanız için kullanıcı onayını engelledi. Düzeltme: Dahil et rıza Yetkilendirme URL'nizde taze bir onay ekranı zorlamak için veya kiracı yöneticisine yönetici onayı URL'sini gönderin.İzin iste=izin ver veya yönetici onayı iste |
| AADSTS50011 | Yönlendirme URI'sı uyuşmuyor | Bu yönlendirme_url'si İsteğinizdeki yönlendirme URI'si, Entra uygulama kaydınızda kayıtlı olanlardan hiçbiriyle tam olarak eşleşmiyor. Sonundaki eğik çizgi farkı bile buna neden olur. Düzeltme: Yönlendirme URI'sini Entra uygulama kaydınızdan tam olarak kopyalayın ve olduğu gibi kullanın.Düzeltme: Entra uygulama kaydında tam URI eşleşmesi |
| AADSTS700016 | Kiracıda uygulama bulunamadı | Bu client_id kimlik doğrulama yapılan kiracıda mevcut değil. Kiracıya özgü bir yetki kullanıldığında yaygındır (/{kiracı-kimliği}) çok kiracılı bir uygulama için. Düzeltme: Kullan /yaygın veya /organizasyonlar Çok kiracılı uygulamalar için yetki.Düzeltme: /common veya /organizations yetkisine geçin |
| AADSTS90099 | Bu kiracıda uygulama yetkilendirilmemiş (consent_required) | Uygulama mevcut ancak kullanıcının kiracısında onaylanmamış. Uygulamanın tamamının engellenmesi, yalnızca belirli kapsamların engellenmesiyle AADSTS65001'den farklıdır. Düzeltme: Yönetici onay URL'sini müşterinin BT yöneticisine gönderin. Düzeltme: Müşteri kiracısı yöneticisine yönetici onayı URL'si |
| AADSTS70011 | Sağlanan hibe geçersiz veya süresi dolmuş | Yenileme belirteci veya yetkilendirme kodu süresi dolmuş veya iptal edilmiş. Yetkilendirme kodlarının süresi 10 dakika içinde dolar. Yenileme belirteçlerinin süresi, 90 günlük hareketsizlikten sonra veya yönetici tarafından iptal edildiğinde dolar. Düzeltme: Kullanıcıyı OAuth akışının başlangıcından yeniden kimlik doğrulaması yapmaya teşvik edin. Düzelt: tam kimlik doğrulama isteği |
| AADSTS50076 | Koşullu Erişim ilkesi tarafından MFA gereklidir | Kullanıcının kiracısı, uygulamanız için çok faktörlü kimlik doğrulaması gerektiriyor. Bu, kiracı yöneticisi tarafından zorunlu tutulan, müşterinin aldığı bir karardır. Uygulamanız bunu aşamaz. Kullanıcının MFA'yı tamamlaması gerekiyor. Yetkilendirme kodu akışını kullanıyorsanız, Microsoft tarayıcıda otomatik olarak MFA istemini gösterecektir. MFA'yı tamamlayamayan otomatik akışlarda (istemci kimlik bilgileri) sorunlar ortaya çıkar. Beklenen: Kullanıcı MFA'yı tamamlamalıdır |
| AADSTS50020 | Dış kimlik sağlayıcısından gelen kullanıcı hesabı kiracıda mevcut değil | Kullanıcı, yalnızca kurumsal hesaplara izin veren bir kiracıya şahsi bir Microsoft hesabıyla (veya tam tersi) kimlik doğrulamaya çalışıyor. Düzeltme: Yetki uç noktanızı kontrol edin - kullanıyorsanız /organizasyonlar, kişisel hesaplar kimlik doğrulaması yapamaz. Geçiş yap /yaygın ikisine de ihtiyacın varsa.Düzelt: otoriteyi /common olarak değiştir |
| AADSTS53003 | Koşullu Erişim ilkesi tarafından erişim engellendi | Kiracının Koşullu Erişim ilkesi bu kimlik doğrulama girişimini tamamen engellemiştir (örneğin, engellenen ülke, yönetilmeyen cihaz, engellenen uygulama). Bu, müşteriye ait bir karardır. Bunu geçersiz kılamazsınız. Hatayı kullanıcıya gösterin ve BT yöneticileriyle iletişime geçmelerini tavsiye edin. Müşteri tarafı: kullanıcıya BT yöneticisiyle iletişime geçmesini söyleyin |
Unipile ile OAuth Altyapısıyla Uğraşmaya 5 Hafta Ayırmaktan Kurtulun
Bu kılavuzdaki her şey - Entra uygulama kaydı, yetkilendirme uç noktaları, kapsam seçimi, PKCE, belirteç döndürme, AADSTS hata işleme - ürününüzü ileriye taşımayan mühendislik süresidir. Unipile, Microsoft Graph OAuth yığınının tamamını yönetilen bir hizmet olarak ele alır, böylece ekibiniz 500 satır OAuth boru tesisatı yazmak yerine tek bir API çağrısı yazar.
İthalat istekleri
UNIPILE_API_URL = "https://apiXXX.unipile.com:XXX"
UNIPILE_API_KEY = "your-api-key"
# 1. Adım: Microsoft için barındırılan bir kimlik doğrulama bağlantısı oluşturun
response = requests.POST(
f"{UNIPILE_API_URL}/api/v1/hosted/accounts/link",
başlıklar=
"X-API-ANAHTAR"UNIPILE_API_ANAHTARI,
"İçerik-Türü": "application/json"
},
json={
"tip": "oluştur",
"sağlayıcılar": ["MİKROSOFT"],
"api_urlsi"UNIPILE_API_URL,
"geçerlilikSüresi": "31-12-2026T23:59:59Z",
# İsteğe bağlı: Bu bağlantıyı belirli bir kullanıcıyla ilişkilendirin
"isim": "kullanıcı_id_123",
# İsteğe bağlı: Hesap bağlandığında bildirim al
"bildirim_url": "https://app.yourproduct.com/webhooks/hesap-bağlandı"
}
)
# 2. Adım: Kullanıcıyı bu URL'ye yönlendirin
barındırılan_kimlik_doğrulama_url = cevap.json()["url"]
# Örneği: https://account.unipile.com/[encoded-token]
# Unipile işlevleri: Entra yönlendirmesi, onay ekranı, PKCE,
# jeton değişimi, yenileme jetonu depolama, kapsam yönetimi
# 3. Adım: Kimlik doğrulamasından sonra, Unipile’ın e-posta API’sini kullanarak e-postaları okuyun/gönderin
e-postalar = istekler.olsun(
"{UNIPILE_API_URL}/api/v1/e-postalar",
başlıklar="X-API-ANAHTAR"UNIPILE_API_ANAHTARI,
parametresi={"hesap_kimliği": "bağlı-hesap-kimliği"}
)Sıkça Sorulan Sorular
E-posta entegrasyonu için Microsoft Graph OAuth ile ilgili en sık sorulan sorular, kapsam seçiminden belirteç yaşam döngüsüne ve kurumsal onay akışlarına kadar.
/yaygın Yetkilendirme uç noktası, tek bir Microsoft Entra uygulama kaydı hem kişisel Outlook.com hesapları hem de Microsoft 365 iş/okul hesapları için kimlik doğrulamayı yönetir. Anahtar nokta, uygulamanızı Azure portalında kaydederken "Herhangi bir dizindeki hesaplar ve kişisel Microsoft hesapları" seçeneğini işaretlemektir.geçersiz_hibe hata. Bunu zarifçe ele alın: bağlı hesabı yeniden kimlik doğrulaması gerektirecek şekilde işaretleyin ve ürününüzde net bir yeniden kimlik doğrulama istemi görüntüleyin. Bu beklenen bir davranıştır - sizin kontrolünüz dışındaki bir müşteri tarafı kararı.Mail.Read, Mail.ReadWriteve Mail.Gönder kullanıcı-onay kapsamlarıdır - bireysel kullanıcılar OAuth akışı sırasında bunları onaylayabilir. Uygulama izinleri veya üst düzey ayrıcalık kapsamları için yalnızca yönetici onayı gerekir Kullanıcı.Tümünü.Oku. Bazı kurumsal kiracılar, üçüncü taraf tüm uygulama onaylarını engelleyen politikalar yapılandırır - bu bir müşteri tarafı kararıdır.geçersiz_hibe hataları ve eski yenileme jetonlarını her jeton yanıtında döndürülen yenisiyle değiştirin.rıza yeniden bir onay ekranı göstermeye zorlamak için yetkilendirme URL'nize. AADSTS90099: Tüm uygulama o kiracıda yetkilendirilmedi - kiracı yöneticisinin uygulamanızı önceden onaylaması gerekiyor. Yönetici onay URL'sini müşterinin BT yöneticisine gönderin. Her iki hata da, kiracıların kullanıcı onayını kısıtladığı kurumsal senaryolarda yaygındır.Mail.ReadWrite ve Mail.Gönder aynı kapsamdaki dize. Unutmayın ki Mail.ReadWrite ve Mail.Gönder ayrı kapsamlar - okuma/yazma erişimine sahip olmak otomatik olarak gönderme izni vermez. Her zaman dahil et çevrimdışı_erişim yenileme jetonu aldığınızdan emin olmak için. Bkz. E-posta API sayfası uygulama ayrıntıları için.