我希望能够在 Azure 活动目录中获取所有用户的 office365 照片。
现在我可以使用图形 SDK 获取当前用户的电子邮件
GraphServiceClient graphClient = SDKHelper.GetAuthenticatedClient();
public async Task<string> GetMyEmailAddress(GraphServiceClient graphClient)
{
User me = await graphClient.Me.Request().Select("mail,userPrincipalName").GetAsync();
return me.Mail ?? me.UserPrincipalName;
}
Run Code Online (Sandbox Code Playgroud)
但我不知道如何将集成在得到照片部分来自https://graph.microsoft.io/en-us/docs/api-reference/v1.0/api/profilephoto_get到代码。
任何帮助或代码示例表示赞赏!
c# outlook-restapi office365api office365-restapi microsoft-graph-api
我在我的项目中使用了 Microsoft Graph SDK 来调用图形 API,为此我需要使用 GraphServiceClient。要使用 GraphServiceClient,我必须添加一些辅助类,其中 SDKHelper 是具有 GetAuthenticatedClient() 方法的静态类。由于被测方法与静态的 SDKHelper 紧密耦合,因此我创建了一个服务类并注入了依赖项。
下面是控制器和方法,
public class MyController
{
private IMyServices _iMyServices { get; set; }
public UserController(IMyServices iMyServices)
{
_iMyServices = iMyServices;
}
public async Task<HttpResponseMessage> GetGroupMembers([FromUri]string groupID)
{
GraphServiceClient graphClient = _iMyServices.GetAuthenticatedClient();
IGroupMembersCollectionWithReferencesPage groupMembers = await _iMyServices.GetGroupMembersCollectionWithReferencePage(graphClient, groupID);
return this.Request.CreateResponse(HttpStatusCode.OK, groupMembers, "application/json");
}
}
Run Code Online (Sandbox Code Playgroud)
服务类,
public class MyServices : IMyServices
{
public GraphServiceClient GetAuthenticatedClient()
{
GraphServiceClient graphClient = new GraphServiceClient(
new DelegateAuthenticationProvider(
async (requestMessage) =>
{
string accessToken …Run Code Online (Sandbox Code Playgroud) 我有一个具有以下属性的 Microsoft Graph 用户:
"onPremisesExtensionAttributes": {
"extensionAttribute1": "attr1",
"extensionAttribute2": null,
"extensionAttribute3": null,
"extensionAttribute4": null,
etc.
},
Run Code Online (Sandbox Code Playgroud)
我似乎找不到关于如何过滤此属性的任何文档或示例。我试过了:
https://graph.microsoft.com/beta/users?$filter=extensionAttribute1 eq 'attr1'
https://graph.microsoft.com/beta/users?$filter=onPremisesExtensionAttributes/extensionAttribute1 eq 'attr1'
https://graph.microsoft.com/beta/users?$filter=onPremisesExtensionAttributes/any(x:startswith(x,'attr1'))
Run Code Online (Sandbox Code Playgroud)
所有这些都会导致错误的请求,所以很明显有问题。
"code": "BadRequest",
"message": "Invalid filter clause",
Run Code Online (Sandbox Code Playgroud)
问题:如何针对 onPremisesExtensionAttributes 或任何其他包含命名属性列表的属性(例如 extensionAttribute1...n)设置过滤器的格式?对于字符串列表(例如 proxyAddresses),您可以执行以下操作:
$filter=proxyAddresses/any(x:startswith(x,%27smtp:myemail%27))
Run Code Online (Sandbox Code Playgroud) 我们想要一个应用程序,它使用 API (Graph Office365 REST) 来浏览电子邮件并列出收件人电子邮件别名。我们的电子邮件用户有几个别名,我们可以通过这些别名将电子邮件接收到同一个收件箱中。
例如 - primaryEmail@my-company.com(主要电子邮件)别名 - primaryEmail.alias1@my-company.com(别名 1)和 primaryEmail.alias2@my-company.com(别名 2)
当我们向 primaryEmail.alias1@my-company.com 发送电子邮件时,可以通过 primaryEmail@example.com 收件箱正确接收电子邮件。当我使用 API(me/messages/{ID} 或 me/messages/{ID}?$select=internetMessageHeaders)列出电子邮件的属性时,别名属性丢失并且 ToRecipients 属性已解析为 primaryEmail@my-公司网站。
有没有办法在 Message 对象中启用 toRecipient email Alias 属性。请帮忙...
提前致谢,
我正在开发一个 ASP.NET 应用程序,除其他外,它应该从 Azure Active Directory 检索用户。为此,我使用了 Microsoft Graph 1.14.0 版预览库,可在此处找到。
由于该库仅提供用于检索用户的异步方法,因此我使用以下(伪)代码来同步运行它。
string userPrincipalName = "test.user@intuneforeducation.com";
var task = Task.Run(async () => await _graphServiceClient.Users[userPrincipalName].Request().GetAsync());
while (!task.IsCompleted)
Thread.Sleep(200);
User retrievedUser = task.Result;
Run Code Online (Sandbox Code Playgroud)
我现在面临的问题是,在从 ASP.NET 应用程序调用这段代码时,task.IsCompleted永远保持false. 现在这是我无法理解的奇怪部分:代码在控制台应用程序和单元测试(使用 NUnit)中完美运行。
有人可能认为 GraphServiceClient 实例在这些版本中的构建方式不同,但我 100% 肯定它不是。组成它的信息是从数据库中加载的,单元测试中的代码与 ASP.NET 应用程序的控制器中的代码完全相同。使用单元测试,上述代码在大约 1.5 秒内执行完毕。在 ASP.NET 应用程序中,我让它运行了长达 30 分钟,没有任何结果,没有错误,没有超时,什么也没有。
我意识到这可能是一个小众问题,但我确实希望有人遇到同样的问题并能够解决它。
我设法解决了这个问题。奇怪的是,将我所有的方法转换为异步任务并没有奏效,甚至await一直挂着。然而,我不完全理解为什么我的解决方案现在有效。看起来我的伪代码并不完全准确,解决方案就在其中。
此代码永远保留在while (!runTask.IsCompleted).
object GetResult<TResult>(Task<TResult> task)
{
using (task)
using (var runTask = …Run Code Online (Sandbox Code Playgroud) 用例:
我们正在创建一个分析邮件内容的系统。如果我们能够根据其内容对电子邮件进行分类和存档,我们希望自动对同一对话/线程中的后续电子邮件进行分类。
问题在于,当我们代表不同用户查询时,作为(邮件)消息的一部分获得的对话 ID 不是唯一的。
一个例子:
答:我的收件箱中给定线程的对话 ID。
B:同一线程的 sessionId,但在不同用户的收件箱中。
价值观:
答:AAQkADUyZWYxNzljLTc4NjItNGMzYy1iZDYwLTE4NWEzNDg1OWUzZQAQABlanHOPI0v1ukA7KePaYv4=。乙:AAQkAGVkNGRjNWNmLTAwNTItNDA2NC1hOThhLTU5NTUyNGFjNTM5ZAAQABlanHOPI0v1ukA7KePaYv4=。
我可以使用此对话 ID 的一部分来识别不同用户之间的相同对话吗?该模式似乎是给定对话的最后 25-26 个字符是唯一的。其余的是 Guid + 某种后缀。
编辑:我的问题与 Microsoft Graph API 的使用有关。在 SO 上回答了与 ConversationIds 和 Outlook 电子邮件相关的问题,但这些问题描述了直接从 Outlook 客户端(或可能通过 Outlook api)获取电子邮件的情况。例如,像 ConversationIndex 和 ConversationTopic 这样的属性不在我从 Graph API 获得的消息中。
outlook outlook-addin office-js outlook-web-addins microsoft-graph-api
我收到以下错误或状态Not granted for my domain。见附件文件
这是因为我的角色是User?
我试图找到 Azure AD 是谁Global Administrator?
我按照以下步骤操作:
(https://portal.azure.com)。Azure Active DirectoryRoles and administratorsGlobal administrator Global administrator它下面说Microsoft Office 365 Portal这是什么意思?
我或组织中的其他人如何成为Global administrator?
我想要API permissions->User.Read.All未授予 mydomain
PS:我的邮箱是work email。
更新 2
Global administrator - Assignments说的Microsoft Office 365 Portal是我的管理员。如何获得这些凭证?

我们希望实现可以跟踪所有过去和新的聊天和频道消息的电子发现集成。
但我们观察到,使用委托权限,该应用程序只能列出用户(无论是否为管理员)所属的聊天;使用应用程序权限时,不支持列表聊天端点。
搜索网站,我们看到了这个问题:如何使用 Microsoft Graph API 检索其他用户的 MS Teams 聊天记录?
这表明这是不可能的。但是他的问题与我们的有点不同,而且是大约一年前的问题。所以我想确认一下:
谢谢!
Our setup is an on-premise Exchange Server which is accessible over the graph api. https://docs.microsoft.com/en-us/graph/hybrid-rest-support
We run in the issue, that our token is only "partial" working. And a token created by "Graph-Playground" is fully working. But we can't find any difference.
The token seems to be valid some …
exchange-server hybrid on-premises-instances microsoft-graph-api
我得到一个Microsoft.Graph.ServiceException与Code: timeout Message: The request timed out.在Microsoft.Graph.Core以下堆栈跟踪:
at Microsoft.Graph.HttpProvider.SendRequestAsync(HttpRequestMessage request, HttpCompletionOption completionOption, CancellationToken cancellationToken)
at Microsoft.Graph.HttpProvider.SendAsync(HttpRequestMessage request, HttpCompletionOption completionOption, CancellationToken cancellationToken)
at Microsoft.Graph.BaseRequest.SendRequestAsync(Object serializableObject, CancellationToken cancellationToken, HttpCompletionOption completionOption)
at Microsoft.Graph.BaseRequest.SendStreamRequestAsync(Object serializableObject, CancellationToken cancellationToken, HttpCompletionOption completionOption)
at MyCode.cs
Run Code Online (Sandbox Code Playgroud)
服务器返回以下标头:
"X-CorrelationId": "605c9349-69e2-4569-acb5-ff9fec9aa887.5e6c48a9-6492-497a-857f-a373bff98f37"
"X-OneDriveMeTA-Version": "1.0.7615.29479"
"X-ErrorCode": "General_Timeout"
"X-ErrorType": "Unexpected"
"X-ErrorSource": "Service"
"X-AspNet-Version": "4.0.30319"
"X-MSEdge-Ref": "Ref A: 71954E8D2D9F46ACAE2CA0953006DE5D Ref B: VIEEDGE1811 Ref C: 2020-11-30T08:56:32Z"
Run Code Online (Sandbox Code Playgroud)
服务器响应:
"Date": "Mon, 30 Nov 2020 08:57:24 GMT"
"StatusCode": "InternalServerError"
"RawResponseBody": "{\"error\":{\r\n \"code\": \"generalException\",\r\n …Run Code Online (Sandbox Code Playgroud)