加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

如何从asp.net核心中的Microsoft帐户获取外部登录配置文件图片

发布时间:2020-12-16 03:24:47 所属栏目:asp.Net 来源:网络整理
导读:如何使用Microsoft.AspNetCore.Authentication.Facebook库从Microsoft帐户获取个人资料图片?我尝试使用声明,但他们没有配置文件图片值…我也尝试通过检查图片网址查看帐户的源代码控制,但我注意到网址是由一些我无法索赔的参数组成的,所以我无法像Facebook
如何使用Microsoft.AspNetCore.Authentication.Facebook库从Microsoft帐户获取个人资料图片?我尝试使用声明,但他们没有配置文件图片值…我也尝试通过检查图片网址查看帐户的源代码控制,但我注意到网址是由一些我无法索赔的参数组成的,所以我无法像Facebook一样构建网址…有人可以帮助我吗?

解决方法

您可以使用Microsoft Graph从Microsoft帐户获取配置文件图片:
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,单击“获取应用程序ID和密码”并下载示例代码),很容易获得如下数据:

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(否则访问令牌将不可用):

services.AddAuthentication()
    .AddMicrosoftAccount(options =>
    {
        options.ClientId = Configuration["ExternalProviders:Microsoft:ClientId"];
        options.ClientSecret = Configuration["ExternalProviders:Microsoft:ClientSecret"];
        options.SaveTokens = true;
        ...

那么这只是制作一个http请求的问题 – 这样的事情:

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;

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读