0

我已经在 ASP.NET MVC 平台中生成了 Microsoft Graph 应用程序,该应用程序是从 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);
                }));
4

1 回答 1

0

我认为也无法访问我正在调查的共享文件夹。关于获取页面的问题,只要你收到第一个请求

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();
}

希望这对你有用!

于 2019-02-27T22:24:46.733 回答