使用访问令牌初始化客户端时,Microsoft graph 抛出以下异常
访问令牌是在初始化客户端之前生成的,并且相同的令牌在 post-man 中也有效
我做错了什么?
代码
let graphClient = graph.Client.init({
// Use the provided access token to authenticate
// requests
authProvider: (done) => {
done(null, accessToken);
}
});
Run Code Online (Sandbox Code Playgroud)
邮递员回应
我正在尝试更新列表项上的值(类型为超链接或图片)。执行 GET 请求时,数据返回正常,但是当我尝试创建一个项目或使用值更新它时,我最终得到以下结果:
{
"error": {
"code": "-1, Microsoft.SharePoint.Client.InvalidClientQueryException",
"message": "A value without a type name was found and no expected type is available. When the model is specified, each value in the payload must have a type which can be either specified in the payload, explicitly by the caller or implicitly inferred from the parent value.",
"innerError": {
"request-id": "d12dfb12-a068-4621-9f27-d284e4635060",
"date": "2019-05-28T08:52:51"
}
}
}
Run Code Online (Sandbox Code Playgroud)
POST/PATCH 请求转到:
https://graph.microsoft.com/v1.0/sites/<siteid>/lists/<listid>/items/
Run Code Online (Sandbox Code Playgroud)
并包含一个简单的 JSON(在 PATCH 的情况下):
{
"WebPage":
{
"Description": "Microsoft Graph",
"Url": …Run Code Online (Sandbox Code Playgroud)
我正在尝试更新identitiesAzure AD B2C 租户中现有用户的集合。federated具体来说,我正在尝试为用户添加另一个身份条目。
根据Microsoft Graph 文档,这应该是可能的,前提是我:
User.ManageIdentities.All向我用来进行图形调用的客户端分配权限userPrincipalName也在请求中发送)我已在 B2C 租户中注册了一个应用程序,并为其分配了访问 Microsoft Graph 的特定权限。我正在使用客户端凭据流程来获取具有声明中适当权限的访问令牌roles。我可以成功获取访问令牌,并通过检查颁发的 JWT 确认是否存在所需的权限。
我还使用Microsoft.Graph SDK从 C# 代码调用图 v1.0 端点。我正在尝试更新一个现有用户,该用户具有众所周知的 userId (objectId)。使用访问令牌,GraphServiceClient我可以成功检索用户。例如,下面的代码可以正常工作
var user = await client.Users[userId].Request()
.Select(o => new { o.Id, o.DisplayName, o.Identities })
.GetAsync();
Run Code Online (Sandbox Code Playgroud)
检索用户后,我尝试向该用户的属性添加另一个条目identities,并为该用户发出更新图调用。请注意,SDK 要求更新调用仅使用本地创建的对象,即您无法发送之前通过 SDK 获取的现有对象。
我的完整更新代码如下
async Task TryUpdateUser(GraphServiceClient client, string userId)
{
var user = await client.Users[userId].Request()
.Select(o => new { o.Id, o.DisplayName, o.Identities …Run Code Online (Sandbox Code Playgroud) 步骤:从 VS2022 (.NET 7) 中的模板创建示例项目,并进行身份验证和图形 -> 工作
将 Graph Core 更新至 3.01,并将 Graph 更新至。5.1 ->
Could not load type 'Microsoft.Graph.IAuthenticationProviderOption' from assembly 'Microsoft.Graph.Core
请帮忙
我正在尝试从我的 Java 应用程序连接到 Microsoft Share Point。Microsoft Graph SDK for Java 的文档不是很清楚。
我正在尝试启动 Graph 客户端,同时通过自定义 GUI 或配置文件提供所需的凭据。
我正在尝试按照以下方式进行但可以
IGraphServiceClient client = GraphServiceClient.builder().authenticationProvider(authenticationProvider).buildClient();
Run Code Online (Sandbox Code Playgroud)
我需要“authenticationProvider”对象是一个实现 IAuthenticationProvider 的类,但是它不清楚要添加什么参数或如何创建这个对象。有没有人以前尝试过这个,构建客户端并提供所需凭据的正确方法是什么?
我正在使用 microsoft graph 发送电子邮件。我想从 Active Directory 中存在的任何电子邮件发送此电子邮件。我已经获得了 Mail.Send 的权限,并获得了 Azure 的管理员同意。因此,所有设置都在 Azure 级别上进行访问和权限设置。
现在该讲代码了。我已经搜索过,但无法弄清楚如何调用 Microsoft graph api 来发送电子邮件。下面是我在搜索时找到的代码。如何替换以下代码以将电子邮件从 Azure AD 中的任何人发送到 Azure AD 中的任何人。还有发送电子邮件“Send AS”的代码。
await graphClient.Me.Messages
.Request()
.AddAsync(message);
Run Code Online (Sandbox Code Playgroud) 我使用 GraphServiceClient 从 Outlook 获取消息。
var messages = await _graphServiceClient.Me.MailFolders[folderId].Messages.Request()
.Header("Prefer", "outlook.body-content-type=\"text\"")
.Filter($"createdDateTime gt {greaterDate} and createdDateTime lt {lessDate}")
.Top(int.MaxValue).GetAsync();
Run Code Online (Sandbox Code Playgroud)
请求最多获取 1000 个项目。
我想获取其他消息并遵循文档。
我的代码:
var pageIterator = PageIterator<Message>
.CreatePageIterator(
_graphServiceClient,
messages,
// Callback executed for each item in
// the collection
(m) =>
{
return true;
},
// Used to configure subsequent page
// requests
(req) =>
{
// Re-add the header to subsequent requests
req.Header("Prefer", "outlook.body-content-type=\"text\"");
return req;
});
await pageIterator.IterateAsync();
Run Code Online (Sandbox Code Playgroud)
但是当我调用我的代码时什么也没有发生。看起来像是pageIterator.IterateAsync();无限循环之后。
怎么了?
c# asp.net-core microsoft-graph-sdks microsoft-graph-mail microsoft-graph-api
我们使用 Outlook Batch API在单个 HTTP 批处理请求中发送多个 Outlook REST 请求。在 Outlook Batch API 中,我们在同一批 HTTP 请求中发出 200 个请求,并且所有并发请求都成功。而如果我们在图API中执行相同的操作,则只有 4 个并发请求成功,因为图 API 中仅支持 4 个并发请求(附加请求和响应)。
我们有这样的情况,例如一次创建 10000 个事件(例如用户可以从单个用户日历中添加/删除 10000 个项目)。
因此,如果将 Graph API 批量限制设置为与 Outlook API 相同(200 个并发请求),将会有很大帮助。
样品请求:
{
"requests": [
{
"url": "/me/calendars",
"method": "POST",
"id": "1",
"headers": {
"Content-Type": "application/json"
},
"body": {
"name": "test1s"
}
},
{
"url": "/me/calendars",
"method": "POST",
"id": "2",
"headers": {
"Content-Type": "application/json"
},
"body": {
"name": "test2"
}
},
{ …Run Code Online (Sandbox Code Playgroud) outlook outlook-restapi microsoft-graph-sdks microsoft-graph-api
Microsoft 将某些 Graph 端点的速率限制为每 10 分钟 10,000 个请求(来源)。如果达到限制,Retry-After标头会指示在发送另一个请求之前要等待多长时间。
这是由 Graph SDK 自动处理的吗?如果没有,呼叫者应该采取什么步骤?
c# azure-active-directory microsoft-graph-sdks microsoft-graph-api
我正在尝试根据我已经有值的二进制扩展属性从 grapi api 检索事件。我已从同一 api 检索到该值,因此我知道存在具有该值的事件。我还知道属性 id 是正确的,因为我将其与 .Expand() 一起使用来获取值。
var value = "BAAAAIIA4AB0xbcQGoLgCAAAAAAwMvfBFvzUAQAAAAAAAAAAEAAAAEZ53uCfQ51AhtRf+FNQjOk=";
var cleanGlobalObjectIdPropertyId = "Binary {6ed8da90-450b-101b-98da-00aa003f1305} Id 0x23";
var events = await client.Users["myuser@example.com"].Events.Request()
.Filter($"singleValueExtendedProperties/Any(ep: ep/id eq '{cleanGlobalObjectIdPropertyId}' and ep/value eq '{value}')")
.GetAsync();
Run Code Online (Sandbox Code Playgroud)
这是我得到的错误:
Microsoft.Graph.ServiceException:代码:ErrorInvalidUrlQueryFilter
消息:$filter 的过滤器表达式与单个扩展属性和值限制不匹配。
我使用了与字符串类型的扩展属性相同的过滤器语法,并且效果很好,所以我认为这是一个二进制属性这一事实与问题相关。
c# ×3
asp.net-core ×2
.net ×1
azure-ad-b2c ×1
email ×1
java ×1
node.js ×1
outlook ×1
sharepoint ×1