我试图获取用户个人资料图片的内容,但我发现我必须调用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工作。
答案 0 :(得分:4)
Azure AD Graph API使用api-version
查询参数。这是一个与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
终点的一些重要说明:
它不受支持,不适合生产。所以不要这样做。或者至少不要告诉任何人,如果它停止工作,请不要打电话给支持。 ; - )
.NET客户端使用从生产元数据构建的对象。这意味着/beta
中添加的任何实体,操作或属性都不存在于SDK附带的模型中。
.NET客户端将忽略Microsoft Graph返回的任何不期望看到的值。因此,如果端点返回的生产元数据中未包含的属性(请参阅#2),则只会忽略该属性。
只要您仅使用/beta
获取功能但仍然期望/v1.0
结果,它应该可以正常工作。例如,照片仅在v1.0中查看Exchange,但在Exchange 和 Active Directory中查看但仍返回相同的结果。从理论上讲,这意味着您应该可以/beta
交换/v1.0
而不会出现问题。
答案 1 :(得分:1)
我认为您仍然在调用V1端点。实际上,Microsoft Graph .NET Client Library目前不支持Beta端点。更多信息here。
答案 2 :(得分:0)
现在有一个官方的Graph API beta客户端: https://github.com/microsoftgraph/msgraph-beta-sdk-dotnet