如何在mvc中使用应用程序登录后获取微软帐户个人资料照片

2023-12-31

在...的帮助下claimprincipal,我能够获取登录用户的详细信息,如下所示,但它没有像谷歌那样提供任何图片相关信息:

https://apis.live.net/v5.0/{USER_ID}/picture?type=large

其中表示 URL 包含路径'{user_id}',这是不受支持的。 甚至尝试过

https://graph.microsoft.com/v1.0/me/photo/$value

它要求访问令牌,但我不确定必须传递什么

string userName = ClaimsPrincipal.Current.FindFirst("name").Value;
string userEmail = ClaimsPrincipal.Current.FindFirst(ClaimTypes.Email).Value;
string userId = ClaimsPrincipal.Current.FindFirst(ClaimTypes.NameIdentifier).Value;

想要添加到任何 Outlook 帐户中的图像


为了显示图像..我们必须使用不记名令牌,并且必须将图像转换为内存流,然后必须使用它..我已经通过以下方式完成了它。希望这有帮助...

 var client = new RestClient("https://login.microsoftonline.com/common/oauth2/token");
                        var request = new RestRequest(Method.POST);
                        request.AddHeader("cache-control", "no-cache");
                        request.AddHeader("content-type", "application/x-www-form-urlencoded");
                        request.AddParameter("application/x-www-form-urlencoded", $"code={code}&client_id={OutClientId}&client_secret={SecretKey}&redirect_uri={OutRedirectUrl}&grant_type=authorization_code", ParameterType.RequestBody);
                        IRestResponse response = client.Execute(request);
                        Token jsonContent = JsonConvert.DeserializeObject<Token>(response.Content);

                        var Token = jsonContent.AccessToken;
                        var TokenType = jsonContent.TokenType;
                        HttpClient httpClient = new HttpClient();
                        httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", Token);
                        HttpResponseMessage response1 = await httpClient.GetAsync("https://graph.microsoft.com/v1.0/me/photos/96x96/$value");
                        if (response1.StatusCode == HttpStatusCode.OK)
                        {
                            using (Stream responseStream = await response1.Content.ReadAsStreamAsync())
                            {
                                MemoryStream ms = new MemoryStream();
                                responseStream.CopyTo(ms);
                                byte[] buffer = ms.ToArray();
                                string result = Convert.ToBase64String(buffer);
                                HttpContext.Session[AppConstants.UserImage] = String.Format("data:image/gif;base64,{0}", result);
                                responseStream.Close();
                            }
                        }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在mvc中使用应用程序登录后获取微软帐户个人资料照片 的相关文章

  • C# GraphSdk 的代理配置

    我需要通过代理中继 C Graph Sdk 发出的 HTTP 请求 在文档中我找不到有关代理设置的任何信息 我目前发现的唯一解决方法是更改 全局代理设置 System Net GlobalProxySelection Select prox
  • 实时服务器上的 woff 字体 MIME 类型错误

    我有一个 asp net MVC 4 网站 我在其中使用 woff 字体 在 VS IIS 上运行时一切正常 然而 当我将 pate 上传到 1and1 托管 实时服务器 时 我得到以下信息 网络错误 404 未找到 http www co
  • 禁用视图中所需的验证特定字段 ASP.NET MVC 4

    如果有人能给我一些提示 我将不胜感激 我搜索了一段时间 我什至找到了一个帖子 我认为它可以解决我的问题 但它没有 在某些情况下禁用必需的验证属性 https stackoverflow com questions 5367287 disab
  • Azure AD AcquireToken 不适用于应用程序密码

    我正在尝试使用 NET ADAL 库验证 Azure AD 中的用户密码 这对于没有 MFA 的常规用户帐户来说效果很好 但对于激活了 MFA 的用户执行此操作时遇到了问题 当使用用户的实际密码时 我得到了AADSTS50076 Appli
  • 如何更新用户的生日

    我想更新birthday使用补丁请求的用户 更新其他属性按预期工作 但此时birthday包含属性时 返回以下错误 目标实体集当前不支持该请求 我已经尝试更新用户以确保权限正常 使用应用程序权限 This PATCH请求 V1 0 user
  • ASP.NET MVC4 与 Twitter Bootstrap 捆绑

    我正在尝试将 MVC 4 中的新捆绑功能与 Twitter bootstrap 结合使用 在我看来 css 中的字形 png 文件的路径在某种程度上被搞乱了 这是我的代码 bundles Add new StyleBundle bundle
  • 使用 C# 使用应用程序密码登录 Office 365 SMTP

    在我们的 Office 365 公司帐户中实施两步身份验证之前 我的 C WPF 程序已成功进行身份验证并发送邮件 我使用了 SmtpClient 库 但现在我必须找到另一个解决方案 因为它不再起作用 我找不到任何使用 O365 应用程序密
  • Graph API:如何获取其他用户的 Outlook 类别

    我想通过 Graph API 获取用户类别 显示名称和颜色列表 GET users id userPrincipalName outlook masterCategories 微软API文档网站 https learn microsoft
  • 在选中的复选框中发布表单时 ModelState 无效

    我遇到以下问题 如果我通过 AJAX 向 api 控制器提交包含复选框中选中值的表单 ModelState 对象会说它无效 先决条件 视觉工作室2012 ASP NET MVC 4 最终版 最新的 jQuery 和 jQuery 不显眼的验
  • MVC 将 PartialViewResult 渲染为字符串

    免责声明 我编辑了问题 因为我改变了过程 但它并没有改变任何问题 我正在尝试获得一个PartialViewResult呈现为字符串 我尝试使用RenderRazorViewToString这个问题的方法将视图渲染为字符串 https sta
  • 如何使用 Microsoft Graph API 按分配的计划筛选用户

    我正在尝试下面的请求 按分配计划属性中的 servicePlanId 过滤用户 尝试过滤 电话系统 计划 https graph microsoft com beta users filter assignedPlans any x x s
  • IdentityServer3 与 ServiceStack 和 MVC 客户端

    我是 IdentityServer3 的新手 刚刚开始设置它 似乎进展顺利 我一直在为 MVC 应用程序开发混合流程 类似于 Kevin Dockx 的 Pluralsight 课程中所示的内容 http www pluralsight c
  • 布局中的模型破坏了其他页面

    由于缺乏 MVC4 经验 我有一个设计缺陷 问题是我的布局中有一个模型 model BasicFinanceUI Models LoginModel Content Site css rel stylesheet type text css
  • 在启用 LowercaseUrls 的情况下保留路由参数中的大小写

    我在用routes LowercaseUrls true 在我的 MVC 4 应用程序中 它运行得很好 但是 参数也会变成小写 所以如果我有一条像 routes MapRoute name MyController url foo hash
  • 如何在MVC中获取控制器中的下拉值

    我使用递归函数使用字符串列表绑定下拉列表我的下拉菜单具有类似的值 家 首页 gt gt 厨房 首页 gt gt 厨房 gt gt ABC 我想在数据库中使用相同的下拉值 ABC 这是我的查看代码 ViewBag Title Createne
  • 如何获得所有用户 OneDrive 文件的管理员访问权限

    我是 Office 365 部署的租户管理员 我们有需要访问所有 OneDrive 站点的内部系统 我们正在使用我的租户管理员凭据来获取 OAuth 令牌 并尝试使用带有该 OAuth 令牌的 SharePoint OneDrive RES
  • c# Asp.NET MVC 使用FileStreamResult下载excel文件

    我需要构建一个方法 它将接收模型 从中构建excel 构建和接收部分完成没有问题 然后使用内存流导出 让用户下载它 不将其保存在服务器上 我是 ASP NET 和 MVC 的新手 所以我找到了指南并将其构建为教程项目 public File
  • ServerManager 构造函数在测试环境中崩溃

    我正在 MVC 4 中构建一个控制应用程序 遇到了一个非常烦人的问题 当我在本地调试项目时 它工作正常 但是 当我将项目部署到测试服务器 Windows Server 2008 R2 时 出现以下换行符 ServerManager mana
  • asp.net mvc 4:向 Scripts.Render 路径添加参数

    我想做以下事情 Scripts Render bundles jquery version 1 版本值必须是动态的并且应该与 cookie 中定义的值匹配 如何将此参数添加到 Scripts Render 我用 jQuery 尝试过类似的方
  • 如何使用 Microsoft Graph 从任意一封电子邮件发送电子邮件

    我正在使用 microsoft graph 发送电子邮件 我想从 Active Directory 中存在的任何电子邮件发送此电子邮件 我已经获得了 Mail Send 的权限 并获得了 Azure 的管理员同意 因此 所有设置都在 Azu

随机推荐