Call Graph API C#

#c# #microsoft-graph-api

#c# #microsoft-graph-api

Вопрос:

Я пытаюсь создать простое консольное приложение на C #, которое позволило бы мне вызывать в этом случае бета-api. Я также пытаюсь вызвать метод делегирования метода.

Это мой основной вызов

    static void Main(string[] args)
    {
        const string clientId = <clientID>;
        const string tenantId = <tenantID>;
        const string clientSecret = <secretKey>;
        const string tokenUrl = "https://login.microsoftonline.com/common/oauth2/v2.0/token";
        List<string> scopeURL = new List<string>();
        scopeURL.Add("https://graph.microsoft.com/.default");
        var graphClient = DelegateApp(clientId,tenantId,clientSecret,scopeURL);
        try
        {
            getUsersAsync(graphClient).GetAwaiter().GetResult();
        }
        catch (Exception ex)
        {
            Console.WriteLine(ex.Message);
        }
        Console.ReadLine();
    }
  

Вот как я определил свой вызов graph

     private static GraphServiceClient DelegateApp(string clientId, string tenantId, string clientSecret, List<string> scope)
    {
        IConfidentialClientApplication confidentialClientApplication = ConfidentialClientApplicationBuilder
            .Create(clientId)
            .WithClientSecret(clientSecret)
            .Build();

        OnBehalfOfProvider authProvider = new OnBehalfOfProvider(confidentialClientApplication, scope);

        var graphClient = new GraphServiceClient(authProvider);
        graphClient.BaseUrl = "https://graph.microsoft.com/beta";
        return graphClient;
    }
  

И это то, что я пытаюсь вызвать

     public async static Task getUsersAsync(GraphServiceClient client)
    {
        try
        {
            var bookingBusiness = await client.BookingBusinesses.Request().GetAsync();
            foreach (var business in bookingBusiness)
            {
                Console.WriteLine(business.DisplayName);
            }
        }
        catch(Exception ex)
        {
            Console.WriteLine(ex.Message);
        }
    } 
  

Это исключение, которое я получаю.
например.Message = «Code: generalException r nMessage: произошла ошибка при отправке запроса.r n»

Это происходит, когда я вызываю client.bookingbusinesses.request.getasync();

Комментарии:

1. Можете ли вы пройти аутентификацию с помощью graph client, используя свои учетные данные? Я заметил, что функция, которая у вас есть, вызывается DelegateApp , однако ваши первые ссылки на функции NonDelegateApp .

2. Извините, исправлю, у меня изначально было два метода, один для делегирования и неразрешения. но да, я попробовал

3. Однако меня не просят войти в систему или что-то в этом роде

4. Если это не проблема с аутентификацией / авторизацией, проверьте все внутренние исключения и убедитесь, что коллекция существует в вашем удаленном графике.