Опубликовать событие в календаре Outlook программно c # ASP.NET - PullRequest
0 голосов
/ 02 июля 2018

Я интегрирую Календарь Outlook с пользовательским календарем с потоком учетных данных клиента , и я пытаюсь создать свой собственный API и не использовать MAPI слишком много.

Я хотел бы сделать сообщение на https://outlook.office.com/api/v2.0/TenantDomain/users/useremail@domain/events

Я следую этому руководству Создать события и создал вспомогательные классы:

public class ToOutlookCalendar
    {
        [JsonProperty("Subject")]
        public string Subject { get; set; }

        [JsonProperty("Body")]
        public Body Body { get; set; }

        [JsonProperty("Start")]
        public End Start { get; set; }

        [JsonProperty("End")]
        public End End { get; set; }

        [JsonProperty("Attendees")]
        public List<Attendee> Attendees { get; set; }
    }

    public class Attendee
    {
        [JsonProperty("EmailAddress")]
        public EmailAddress EmailAddress { get; set; }

        [JsonProperty("Type")]
        public string Type { get; set; }
    }

    public class EmailAddress
    {
        [JsonProperty("Address")]
        public string Address { get; set; }

        [JsonProperty("Name")]
        public string Name { get; set; }
    }

    public class Body
    {
        [JsonProperty("ContentType")]
        public string ContentType { get; set; }

        [JsonProperty("Content")]
        public string Content { get; set; }
    }

    public class End
    {
        [JsonProperty("DateTime")]
        public DateTimeOffset DateTime { get; set; }

        [JsonProperty("TimeZone")]
        public string TimeZone { get; set; }
    }

мой объект json выглядит так:

List<ToOutlookCalendar> toOutlook = new List<ToOutlookCalendar>();
        toOutlook.Add(new ToOutlookCalendar
        {
            Start = new End
            {
                DateTime = DateTimeOffset.UtcNow,
                TimeZone = "Pacific Standard Time"
            },
            End = new End
            {
                DateTime = DateTimeOffset.UtcNow,
                TimeZone = "Pacific Standard Time"
            },
            Body = new Body
            {
                ContentType = "HTML",
                Content = "testar for att se skit"
            },
            Subject = "testin",
            Attendees = new List<Attendee>
            {
                new Attendee
                {
                    EmailAddress = new EmailAddress
                    {
                        Address = "some email",
                        Name = "name"
                    }

                },
                new Attendee
                {
                    EmailAddress = new EmailAddress
                    {
                        Address = "some email",
                        Name = "name"
                    }
                }
            }
        });

        return new JsonResult
        {
            Data = toOutlook,
            ContentType = "application/json",
            JsonRequestBehavior = JsonRequestBehavior.AllowGet

        };

я хочу сделать метод PostAsync следующим образом:

var res =  await ToOutlookKalendrar();
var stringPayload = await Task.Run(() => JsonConvert.SerializeObject(res));
var httpContent = new StringContent(stringPayload, Encoding.UTF8, "application/json");

var responsse = await client.PostAsync($"https://outlook.office.com/api/v2.0/{tenantDomain}/users/{userEmail}/events", stringPayload );

Однако это дает мне 401 несанкционированный доступ, я что-то пропустил? мне нужно включить accessToken в Httpclient?

Обновление

Я добавил токен в заголовки запроса, но все еще получаю 401 неавторизованным:

        client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
        client.DefaultRequestHeaders.Add("Authorization", "Bearer " + tokenn);

Обновление 2 Теперь я получаю эту ошибку после включения accessToken в шапку:

reason = "Токен доступа получен с использованием метода проверки подлинности, который слишком слаб, чтобы разрешить доступ для этого приложения. Представленная сила аутентификации была 1, требуется 2."; Error_category = "invalid_token"

Теперь я потерян, должен ли accesstoken находиться в заголовке или в теле объекта json?

Обновление 3 В настоящее время мне нужно обновить, как я получу accessToken, я отправлю ответ, если мне удастся сделать это правильно на этот раз

Любая помощь приветствуется !!

1 Ответ

0 голосов
/ 05 июля 2018

На этот вопрос ответили в другом сообщении, перейдите по этой ссылке для ответа. Я использовал неправильный requestURL здесь, все объяснено в другом посте:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...