Как получить доступ к папке «Общая почта» с помощью Microsoft Graph в приложении - PullRequest
0 голосов
/ 17 января 2019

Я создал приложение Microsoft Graph на платформе ASP.NET MVC, которое я скачал с сайта Microsoft Graph. Мне нужно получить доступ к общей папке почты, не уверен, как именно я могу это получить ?? В следующем коде я могу получить доступ к своей mailFolder, но не к общей папке!

public static async Task<IEnumerable<MailFolder>> GetMailFolderAsync()
{
    var graphClient = GetAuthenticatedClient();
    var mailFolder = await graphClient.Me.MailFolders.Request().GetAsync();
    var sharedMailFolder = await graphClient.Users.Request().GetAsync();
    return mailFolder;
}

Кроме того, я хочу знать в приведенном выше коде, где я могу передать параметр для доступа к следующей странице или ко всем страницам ??

private static GraphServiceClient GetAuthenticatedClient()
    {
        return new GraphServiceClient(
            new DelegateAuthenticationProvider(
                async (requestMessage) =>
                {
                    string signedInUserId = ClaimsPrincipal.Current.FindFirst(ClaimTypes.NameIdentifier).Value;
                    SessionTokenStore tokenStore = new SessionTokenStore(signedInUserId,
                        new HttpContextWrapper(HttpContext.Current));

                    var idClient = new ConfidentialClientApplication(
                        appId, redirectUri, new ClientCredential(appSecret),
                        tokenStore.GetMsalCacheInstance(), null);

                    var accounts = await idClient.GetAccountsAsync();

                    var result = await idClient.AcquireTokenSilentAsync(
                        graphScopes.Split(' '), accounts.FirstOrDefault());

                    requestMessage.Headers.Authorization =
                        new AuthenticationHeaderValue("Bearer", result.AccessToken);
                }));

1 Ответ

0 голосов
/ 28 февраля 2019

Я думаю, что также невозможно получить доступ к общим папкам, которые я изучаю. Что касается вопроса получения страниц, как только вы получите первый запрос

public static async Task<IEnumerable<MailFolder>> GetMailFolderAsync()
{
    var graphClient = GetAuthenticatedClient();
    var mailFolder = await graphClient.Me.MailFolders.Request().GetAsync();
    var sharedMailFolder = await graphClient.Users.Request().GetAsync();
    return mailFolder;
}

тогда вы можете просмотреть, например, mailFolder.NextPageRequest, если оно не равно нулю, вы можете запросить его, выполнив mailFolder.NextPageRequest.GetAsync (), и вы можете использовать его как условный цикл

while(mailfoldersCollection != null) {
// Do your stuff with items within for(var folder in mailfoldersCollection) {}
// when read all items in CurrentPage then
if (mailFolder.NextPageRequest != null) {
mailfoldersCollection = await mailFolder.NextPageRequest.GetAsync();
}

надеюсь, что это работает для вас!

...