如何从C#调用Microsoft Graph Beta API

dan*_*scu 4 c# microsoft-graph

我试图获取用户个人资料图片的内容,但发现我必须调用Beta版本,因为当前版本给出以下错误消息:

"code": "GetUserPhoto",
"message": "The operation is not supported."
Run Code Online (Sandbox Code Playgroud)

因此,我尝试切换到Beta,这是我用C#编写的代码,但是没有用:

Microsoft.Graph 1.6.2

List<QueryOption> options = new List<QueryOption>
{
    new QueryOption("$api-version", "beta")
};

var pictureStream = await graphClient.Me.Photo.Content.Request(options).GetAsync();
Run Code Online (Sandbox Code Playgroud)

我收到相同的错误消息。

我在图形资源管理器中尝试了相同的请求。1.0无效,但Beta有效。

Mar*_*eur 5

所述api-version查询参数由天青AD图形API使用。这是与Microsoft Graph不同的API。功能上有很多重叠(Azure AD Graph正在缓慢地迁移到Microsoft Graph),但是它们使用完全不同的实体和调用约定。

为了/beta使用Microsoft Graph .NET客户端库调用端点,您需要更改BaseUrl客户端的:

graphClient.BaseUrl = "https://graph.microsoft.com/beta";
var pictureStream = await graphClient.Me.Photo.Content.Request().GetAsync();
Run Code Online (Sandbox Code Playgroud)

有关/beta端点的一些重要说明:

  1. 不支持,因此不适合生产。所以不要那样做。或者至少不要告诉任何人,如果停止工作,也不要致电支持部门。;-)

  2. .NET客户端使用基于生产元数据构造的对象。这意味着,/betaSDK随附的模型中不存在添加的任何实体,动作或属性。

  3. .NET客户端将忽略Microsoft Graph不希望看到的任何值。因此,如果端点返回的属性未包含在生产元数据中(请参阅#2),则将被忽略。

    只要您仅使用a /beta即可获得功能,但仍希望获得/v1.0结果,它就可以正常工作。例如,照片仅在v1.0中查看Exchange,但同时查看Exchange Active Directory,但仍返回相同的结果。从理论上讲,这意味着你应该能够交换/beta/v1.0没有问题。