簡體   English   中英

Microsoft Graph API - 管理員同意更新用戶日歷

[英]Microsoft Graph API - Administrator Consent to update User Calendar

我正在開發一個集成 Microsoft Graph API 的應用程序,是否可以讓每個租戶的管理員同意權限,以便用戶無需與我們的應用程序進行任何交互來授予權限,以便我們可以更新用戶日歷? 或者用戶是否必須至少提供一次授權才能獲得授權令牌?

我一直在看本指南: https ://docs.microsoft.com/en-gb/graph/auth-v2-service

您可以在沒有用戶登錄的情況下通過調用 ms graph api 來更新用戶的日歷。但如果支持Application api 權限,則取決於您使用的 api。 例如, 此 api用於為日歷創建事件。 它支持應用程序權限。

在此處輸入圖像描述

我還想通知您,使用應用程序權限不是最佳做法,因為它會給您的應用程序提供如此大的權限來管理所有用戶的日歷。 但這似乎是你的目標。

讓我們回到您的要求。 並以我提到的 api 為例。 您首先需要擁有一個 azure 廣告應用程序並為其授予正確的 api 權限,然后讓租戶管理員通過單擊“授予 xx_tenant 管理員同意”來同意該權限。

在此處輸入圖像描述

然后,您還需要為您的 azure 廣告應用程序創建一個客戶端密碼 轉到 Azure 廣告 -> 證書和機密 -> 新的 cient 機密。 請復制秘密。 然后假設您有一個用於調用圖形 api 的 asp.net 核心應用程序。 然后參考本節或者我下面的代碼使用graph sdk調用api。 請注意, graphClient.Users["user_principle"]表示誰創建了事件, Attendees定義了將添加事件的日歷。

using Azure.Identity;
using Microsoft.Graph;

var scopes = new[] { "https://graph.microsoft.com/.default" };
var tenantId = "your_tenant_name.onmicrosoft.com";
var clientId = "azure_ad_app_id";
var clientSecret = "client_secret";
var clientSecretCredential = new ClientSecretCredential(
    tenantId, clientId, clientSecret);
var graphClient = new GraphServiceClient(clientSecretCredential, scopes);
var @event = new Event
{
    Subject = "Let's go for lunch",
    Body = new ItemBody
    {
        ContentType = BodyType.Html,
        Content = "Does noon work for you?"
    },
    Start = new DateTimeTimeZone
    {
        DateTime = "2022-07-15T12:00:00",
        TimeZone = "Pacific Standard Time"
    },
    End = new DateTimeTimeZone
    {
        DateTime = "2017-07-15T14:00:00",
        TimeZone = "Pacific Standard Time"
    },
    Location = new Location
    {
        DisplayName = "Harry's Bar"
    },
    Attendees = new List<Attendee>()
    {
        new Attendee
        {
            EmailAddress = new EmailAddress
            {
                Address = "samanthab@contoso.onmicrosoft.com",
                Name = "Samantha Booth"
            },
            Type = AttendeeType.Required
        }
    },
    AllowNewTimeProposals = true,
    TransactionId = "7E163156-7762-4BEB-A1C6-729EA81755A7"
};

await graphClient.Users["user_principle"].Events
    .Request()
    .Header("Prefer","outlook.timezone=\"Pacific Standard Time\"")
    .AddAsync(@event);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM