Нужно ли иметь бизнес-аккаунт для использования OneNote API? - PullRequest
0 голосов
/ 08 ноября 2019

Я занимаюсь разработкой приложения с использованием Microsoft Graph и тестирую некоторые основные функции с OneNote. Я могу использовать пользователей, но я получаю ошибки, связанные с лицензиями SharePoint, когда дело доходит до OneNote.

Ошибка, которую я получаю: {"error": {"code": "30121", "message": "У арендатора нет действующей лицензии SharePoint.", "InnerError": {"request-id ":" 12d9555f-ab42-43d6-a5ad-ed4be2fe0c93 "," date ":" 2019-11-11T12: 58: 55 "}}}

Нужно ли мне покупать Office для бизнеса, если яуже есть Office для дома, и если нет, как я могу решить эту ошибку?

Согласно Конечная точка календаря возвращает OrganizationFromTenantGuidNotFound , мне нужно иметь подписку на Office 365 Business, но она все еще не яснадля меня, почему он должен включать SharePoint.

Это код, который я бегу:

public class X
{
    public void thing()
    {
        static void Main(string[] args)
        {
            Task<string> task = GetAccessToken();
            task.Wait();

            var token = task.Result;
            Console.WriteLine(token);

            Task<string> usersTask = GetUser(token);
            usersTask.Wait();

            var user = usersTask.Result;
            Console.WriteLine(user);

            Task<string> notesTask = GetNotes(token, user); //GetEmail(token, user);
            notesTask.Wait();

            var notes = notesTask.Result;
            Console.WriteLine(notes);

            Console.ReadKey();
        }

        static async Task<string> GetAccessToken()
        {
            string token = "";
            StringContent content =
                new StringContent($"client_id={clientId}&scope=https%3A%2F%2Fgraph.microsoft.com%2F.default&client_secret={appKey}&grant_type=client_credentials", Encoding.UTF8, "application/x-www-form-urlencoded");
            using(var response = await httpClient.PostAsync($"https://login.microsoftonline.com/{tenant}/oauth2/v2.0/token", content))
            {
                if (response.IsSuccessStatusCode)
                {
                    dynamic result = JsonConvert.DeserializeObject(await response.Content.ReadAsStringAsync());
                    token = result.access_token;
                }
            }

            return token;
        }

        static async Task<string> GetUser(string token)
        {
            string user = "";
            httpClient.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Bearer", token);

            using(var response = await httpClient.GetAsync($"https://graph.microsoft.com/v1.0/users"))
            {
                if (response.IsSuccessStatusCode)
                {
                    var res = await response.Content.ReadAsStringAsync();
                    dynamic users = JsonConvert.DeserializeObject(res);
                    return users.value[1].id;
                }
            }

            return user;
        }

        static async Task<string> GetNotes(string token, string userId)
        {
            var data = "";
            httpClient.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Bearer", token);

            using(var response = await httpClient.GetAsync($"https://graph.microsoft.com/v1.0/users/{userId}/onenote/notebooks"))
            {
                if (response.IsSuccessStatusCode) //error
                {
                    var res = await response.Content.ReadAsStringAsync();
                    return res;
                }
            }

            return data;
        }
    }
}

1 Ответ

0 голосов
/ 08 ноября 2019

Когда вы пытаетесь получить доступ к облачной информации / ноутбукам, вам потребуется подписка Office 365 .

Ноутбуки OneNote хранятся на Sharepoint в Office 365.

Существует также возможность использования Interop C # сборок ...

...