【问题标题】:How to call Microsoft Graph Beta API from C#如何从 C# 调用 Microsoft Graph Beta API
【发布时间】:2021-01-19 23:24:15
【问题描述】:

我试图获取用户头像的内容,我发现我必须调用 Beta 版本,因为当前版本给出了以下错误消息:

"code": "GetUserPhoto",
"message": "The operation is not supported."

所以,我尝试切换到 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();

我收到了同样的错误信息。

我在 Graph Explorer 中尝试了相同的请求。 1.0 不工作,但 Beta 工作。

【问题讨论】:

    标签: c# microsoft-graph-api


    【解决方案1】:

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

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

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

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

    1. 它不受支持且不适合生产。所以不要那样做。或者至少不要告诉任何人,如果它停止工作,不要打电话给支持。 ;-)

    2. .NET 客户端使用从生产元数据构造的对象。这意味着在 /beta 中添加的任何实体、操作或属性都不存在于 SDK 附带的模型中。

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

      只要您只使用/beta 来获得功能但仍期待/v1.0 结果,它应该可以正常工作。例如,照片仅查看 v1.0 中的 Exchange,但同时查看 Exchange Active Directory,但仍返回相同的结果。从理论上讲,这意味着您应该可以毫无问题地将/beta 换成/v1.0

    【讨论】:

      【解决方案2】:

      我认为您仍在调用 V1 端点。实际上,Microsoft Graph .NET 客户端库当前不支持 Beta 终结点。更多信息here.

      【讨论】:

        【解决方案3】:

        Graph API 现在有一个官方测试版客户端: https://github.com/microsoftgraph/msgraph-beta-sdk-dotnet

        【讨论】:

        • Install-Package Microsoft.Graph.Beta 在我的 Net Core 3.0 项目中使用 Visual Studio 2019 中的 PM 似乎不起作用。返回Install-Package : Unable to find package 'Microsoft.Graph.Beta'
        • @CMorgan 您必须添加参数-IncludePrerelease 才能安装软件包。
        猜你喜欢
        • 2022-10-25
        • 2020-04-26
        • 2017-01-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多