Отправка запроса на создание события с использованием api графика createEvent выдает ошибку OrganizationFromTenantGuidNotFound

Я хочу создать онлайн-событие с помощью Microsoft Graph API.

У меня есть подписка на Office 365

Я зарегистрировал приложение в Azure AD с типом учетной записи «Учетные записи в любом каталоге организации (любой каталог Azure AD - Multitenant) и личные учетные записи Microsoft (например, Skype, Xbox)»

Не предоставлен URL-адрес перенаправления при настройке

Я предоставил как делегированные, так и разрешения приложения для приложения Calendars.ReadWrite и предоставил согласие администратора.

Зависимости Maven

    <dependency>
        <groupId>com.microsoft.azure</groupId>
        <artifactId>msal4j</artifactId>
        <version>1.6.0</version>
    </dependency>
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-nop</artifactId>
        <version>1.8.0-beta4</version>
    </dependency>
    <dependency>
        <groupId>com.microsoft.graph</groupId>
        <artifactId>microsoft-graph</artifactId>
        <version>1.7.1</version>
    </dependency>
    <dependency>
        <groupId>com.microsoft.graph</groupId>
        <artifactId>microsoft-graph-core</artifactId>
        <version>1.0.1</version>
    </dependency>
    <dependency>
        <groupId>com.microsoft.graph</groupId>
        <artifactId>microsoft-graph-auth</artifactId>
        <version>0.2.0-SNAPSHOT</version>
    </dependency>

Я использую ClientCredentialProvider для создания поставщика аутентификации. Но всякий раз, когда я пытаюсь создать событие, получаю "OrganizationFromTenantGuidNotFound"

ClientCredentialProvider authProvider =  new ClientCredentialProvider(
            CLIENT_ID,
            Arrays.asList("https://graph.microsoft.com/.default"),
            CLIENT_SECRET,
            "938db5c8-e2ce-3c76-bad7-1e00cf87b779",
            NationalCloud.Global

    );

Пожалуйста, найдите трассировку стека здесь

stacktrace

Пожалуйста помоги!


person Varun KS    schedule 11.06.2020    source источник
comment
Это правильный идентификатор клиента (938db5c8-e2ce-3c76-bad7-1e00cf87b779)?   -  person InfoÁsith    schedule 18.06.2020
comment
Нет, это фиктивный идентификатор, но я использую правильный в коде   -  person Varun KS    schedule 23.06.2020


Ответы (1)


ОБНОВЛЕНИЕ: я исследовал с Варуном в автономном режиме. В его случае проблема заключалась в том, что он пытался создать событие в календаре гостевого пользователя. Это был пользователь hotmail.com, который был добавлен к своему клиенту M365 в качестве гостя. Это не сработает, потому что почтовый ящик пользователя (и, следовательно, ее календарь) существует за пределами клиента M365.

Из трассировки стека вы отправляете POST на https://graph.microsoft.com/v1.0/me/events. Это требует пользовательского контекста, поскольку вы используете сегмент /me. Однако из приведенного выше кода вы получаете токен только для приложения, что означает, что вы аутентифицированы как приложение, а не как какой-либо пользователь. Попытка получить доступ к любому URL-адресу с помощью /me здесь не удастся.

Вместо этого вам нужно получить идентификатор пользователя, а затем отправить POST в https://graph.microsoft.com/v1.0/users/{user-id}/events.

person Jason Johnston    schedule 23.06.2020
comment
Нет, это все еще дает мне ту же ошибку. OrganisationFromTenantGuidNotFound - person Varun KS; 24.06.2020
comment
У вас есть подписка на Office 365 в этом клиенте с Exchange Online? Можете ли вы войти в систему с одним из своих пользователей на странице developer.microsoft.com/en-us / graph / graph-explorer и выполнить любой из календарных запросов? - person Jason Johnston; 24.06.2020
comment
Да, у меня есть подписка на Office 365, и я могу выполнять запросы в проводнике графиков. BTW graph explorer использует делегированные разрешения, поэтому это не будет проблемой, но проблема заключается в использовании разрешений приложения с ClientCredentialProvider - person Varun KS; 25.06.2020
comment
Да, я знаю, что GE использует делегирование, я просто хотел убедиться, что ваш арендатор действительно работает. Я инициализировал поставщика аутентификации точно так же, как и вы, и он отлично работает. Вы делаете что-то неправильно, используете неправильный GUID клиента, пытаетесь сделать это с помощью личной учетной записи (outlook.com и т. Д.) Или что-то еще. Вы проверяли свой токен на jwt.ms? - person Jason Johnston; 25.06.2020
comment
Да, я только что проверил с помощью jwt.ms, декодированный токен имеет все разрешения, а GUID клиента совпадает с идентификатором GUID, показанным на рекламном портале Azure. Я не предоставил никаких сертификатов, я предоставил только секрет клиента, может ли это вызвать проблему? Я добавил поддерживаемый тип учетной записи в качестве учетных записей в любой организационный каталог (любой каталог Azure AD - Multitenant), выбрал платформу как веб-сайт и дал URL-адрес перенаправления как локальный: 8080 - person Varun KS; 27.06.2020