gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 21:06:43 24 4
gpt4 key购买 nike

如何使用 Microsoft.AspNetCore.Authentication.Facebook 库从 Microsoft 帐户获取个人资料图片?我尝试使用声明,但他们没有个人资料图片值...我也尝试通过检查图像 url 来查看帐户的源代码管理,但我注意到该 url 由一些我无法通过声明获得的参数组成,所以我不能像使用 facebook 那样构建 url ......有人可以帮助我吗?

最佳答案

您可以使用 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 和 key ”并下载示例代码),很容易获取数据,如下所示:

GraphServiceClient graphClient = SDKHelper.GetAuthenticatedClient();

var photoStream = await graphService.GetCurrentUserPhotoStreamAsync(graphClient);

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

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

关于asp.net - 如何从asp.net core中的Microsoft帐户获取外部登录配置文件图片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44110295/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com