在C#插件中获取Outlook用户头像的方法咨询
获取Outlook用户头像(通过CRMServiceClient)
可以通过CRMServiceClient获取用户头像,用户头像实际存储在systemuser实体的EntityImage属性中(二进制类型),这个属性不会在常规字段列表中直接显示,需要专门查询。
实现步骤与代码示例
- 初始化
CRMServiceClient连接后,通过Retrieve方法查询systemuser实体,并指定获取entityimage(二进制图片数据)和entityimage_url(图片访问URL)属性:
// 替换为你的CRM连接字符串 string connectionString = "AuthType=OAuth;Url=https://your-org.crm.dynamics.com;Username=user@org.onmicrosoft.com;Password=your-password;AppId=your-app-id;RedirectUri=app://58145B91-0C36-4500-8554-080854F2AC97;"; var serviceClient = new CRMServiceClient(connectionString); if (serviceClient.IsReady) { // 替换为目标用户的ID Guid targetUserId = new Guid("xxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"); ColumnSet columns = new ColumnSet("entityimage", "entityimage_url"); var systemUser = serviceClient.Retrieve("systemuser", targetUserId, columns); // 方式1:获取二进制图片数据 if (systemUser.Contains("entityimage")) { byte[] avatarData = systemUser.GetAttributeValue<byte[]>("entityimage"); // 将字节数组保存为图片文件 File.WriteAllBytes(@"C:\temp\user-avatar.png", avatarData); } // 方式2:通过图片URL获取(系统自动生成的CDN地址) if (systemUser.Contains("entityimage_url")) { string avatarUrl = systemUser.GetAttributeValue<string>("entityimage_url"); // 使用HttpClient下载图片 using (HttpClient client = new HttpClient()) { byte[] avatarData = await client.GetByteArrayAsync(avatarUrl); File.WriteAllBytes(@"C:\temp\user-avatar-from-url.png", avatarData); } } }
注意事项
- 确保当前CRM账号拥有读取
systemuser实体EntityImage属性的权限。 - 如果用户未设置头像,
entityimage和entityimage_url属性不会存在,需先通过Contains方法判断属性是否存在。 entityimage_url是只读属性,由系统自动生成,仅当用户上传头像后才会生成。
内容的提问来源于stack exchange,提问作者MO5BR
相关产品推荐
相关产品推荐

