首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在asp.net内核中从微软帐号获取外部登录资料图片

如何在asp.net内核中从微软帐号获取外部登录资料图片
EN

Stack Overflow用户
提问于 2017-05-22 18:13:29
回答 1查看 1.7K关注 0票数 5

如何使用Microsoft.AspNetCore.Authentication.Facebook库从微软账户中获取头像?我试过使用索赔,但它们没有头像价值...我也试着通过检查图片url来查看账户的源码控制,但我注意到url是由一些参数组成的,而这些参数是我无法通过声明获得的,所以我不能像使用facebook那样构建url……有人能帮帮我吗?

EN

回答 1

Stack Overflow用户

发布于 2018-01-04 17:16:31

您可以使用Microsoft Graph:https://developer.microsoft.com/en-us/graph/quick-start从微软帐户获取个人资料图片

如何申请头像的具体说明:https://developer.microsoft.com/en-us/graph/docs/api-reference/v1.0/api/profilephoto_get

如果您按照快速入门(选择asp.net,点击[获取app ID和密码]并下载示例代码),则很容易获得如下数据:

代码语言:javascript
复制
GraphServiceClient graphClient = SDKHelper.GetAuthenticatedClient();

var photoStream = await graphService.GetCurrentUserPhotoStreamAsync(graphClient);

编辑:对不起,忘记了asp.net核心部分( Microsoft.Identity.Client似乎不适用于asp.net核心)。

在ExternalLoginCallback中,您可以从var info = await _signInManager.GetExternalLoginInfoAsync()返回的ExternalLoginInfo对象获取访问令牌;请记住在配置身份验证时将SaveTokens设置为true (否则访问令牌将不可用):

代码语言:javascript
复制
services.AddAuthentication()
    .AddMicrosoftAccount(options =>
    {
        options.ClientId = Configuration["ExternalProviders:Microsoft:ClientId"];
        options.ClientSecret = Configuration["ExternalProviders:Microsoft:ClientSecret"];
        options.SaveTokens = true;
        ...

然后,这只是一个发出http请求的问题-就像这样:

代码语言:javascript
复制
var httpClient = new HttpClient();
httpClient.SetBearerToken(info.AuthenticationTokens.Where(t => t.Name.Equals("access_token")).First().Value);
var pictureResult = httpClient.GetAsync("https://graph.microsoft.com/v1.0/me/photo/$value").Result;
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44110295

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档