当前位置: 首页 > 知识库问答 >
问题:

Microsoft Graph API更新其他用户的照片?

太叔望
2023-03-14
using (HttpClient client = new HttpClient())
{
    client.BaseAddress = new Uri("https://graph.microsoft.com/");
    client.DefaultRequestHeaders.Accept.Clear();
    client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("image/jpeg"));
    client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", oauthToken);

    // HTTP GET                
    HttpResponseMessage response = await client.PatchAsync($"v1.0/users/{emailAddress}/photo/$value", byteContent);
    if (!response.IsSuccessStatusCode)
    {
        throw new Exception("Error!");
    }
}

403禁止

是不可能使用Graph API做到这一点,还是我在某个地方缺少了一个权限?

SCP值为:calendars.read calendars.read write contacts.read contacts.read write directory.accessasuser.all directory.read.all directory.readwrite.all email exchange.manage files.read files.readwrite.selected files.readwrite.readwrite.selected full_access_asuser group.read.all group.readwrite.readwrite.selected files.readwrite.readwrite.readwrite.readwrite.readwrite.readwrite.readwrite.readwrite.readwrite.readwrite.readwrite.Basic.All用户.ReadWrite用户.ReadWrite.All

共有1个答案

冯驰
2023-03-14

首先,您应该看看在//Build 2016期间发布的新的Microsoft Graph SDK这里是Microsoft Graph SDK的Github:https://Github.com/microsoftgraph
这里是我使用它创建的完整示例:https://Github.com/mimetis/nextMeetingsforGraphSample

对于您的问题,下面是我编写的两个方法,它们对我起作用:我假设,您有一个方法可以获得有效的访问令牌。

using (HttpClient client = new HttpClient())
{
    var authResult = await AuthenticationHelper.Current.GetAccessTokenAsync();
    if (authResult.Status != AuthenticationStatus.Success)
        return;

    client.DefaultRequestHeaders.Add("Authorization", "Bearer " + authResult.AccessToken);

    Uri userPhotoEndpoint = new Uri(AuthenticationHelper.GraphEndpointId + "users/" + userIdentifier + "/Photo/$value");
    StreamContent content = new StreamContent(image);
    content.Headers.Add("Content-Type", "application/octet-stream");

    using (HttpResponseMessage response = await client.PutAsync(userPhotoEndpoint, content))
    {
        response.EnsureSuccessStatusCode();
    }
}

如果您使用Microsoft Graph SDK,它将非常简单:)

GraphServiceClient graphService = new GraphServiceClient(AuthenticationHelper.Current);
var photoStream = await graphService.Users[userIdentifier].Photo.Content.Request().PutAsync(image); //users/{1}/photo/$value
 类似资料:
  • 问题内容: 当我选择第一个SelectOnMenu的任何项目时,我想更新第二个SelectOneMenu。现在,我从ManagedBean获取SelectOneMenus的值。我想我必须使用AJAX(jquery)将参数发送到ManagedBean。 问题答案: 实际上,您可以使用ValueChangeListener,当selectOneMenu的值更改时将调用它: 然后,在您的bean中,您可

  • 控制器类别:包装样品;

  • 在 seahub_settings.py 配置文件中可以个性化用户管理 # 是否开启用户注册功能,默认为 `False`,不开启. ENABLE_SIGNUP = False # 用户注册后是否立即激活,默认为 `True`,立即激活。 # 如果设置为 `False`,需管理员在系统管理界面激活用户。 ACTIVATE_AFTER_REGISTRATION = False # 管理员添加新用户后,

  • 我有一个表,它有一个主键,这个主键是用table Generator生成的: @tablegenerator(name=“resourceidgenerator”,table=“sequence”,pkColumnName=“name”,pkColumnValue=“resource_type_id”,valueColumnName=“nextid”,allocationSize=1),它工作得很

  • 问题内容: 我正在寻找不在我的网站页面上显示instagram照片的方法,但是不能显示。如果我只有instagram用户的帐户名(例如jamieoliver),该怎么办?我的网站写在Wordpress上。 需要不显示 我的 图像 问题答案: 此URL格式将返回一个json文件,其中包含来自该用户的最新(20 +/-)媒体文件。 在您的示例中,您可以执行http://instagram.com/ja

  • 您好,我有两个表,其中表1是针对产品的,表2是我想使用this SQL更新的类别,但不断出现语法错误 1064-您的SQL语法有错误;检查与您的MySQL服务器版本对应的手册,在第4行的“WHERE EXISTS(SELECTproduct.local_delivery,product.none”附近使用正确的语法