标签: microsoft-graph-sdks

Microsoft graph:UnhandledPromiseRejectionWarning:PolyFillNotAvailable:库无法在没有获取的情况下运行。所以,请为其提供polyfill

使用访问令牌初始化客户端时,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)

邮递员回应

在此输入图像描述

node.js microsoft-graph-sdks microsoft-graph-api

13
推荐指数
1
解决办法
4914
查看次数

无法通过 Microsoft Graph 更新 SharePoint 中的超链接或图片

我正在尝试更新列表项上的值(类型为超链接或图片)。执行 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)

microsoft-graph-sdks microsoft-graph-api

8
推荐指数
1
解决办法
152
查看次数

如何使用 Microsoft Graph 和 SDK 更新现有 B2C 用户的身份集合

我正在尝试更新identitiesAzure AD B2C 租户中现有用户的集合。federated具体来说,我正在尝试为用户添加另一个身份条目。

根据Microsoft Graph 文档,这应该是可能的,前提是我:

  1. User.ManageIdentities.All向我用来进行图形调用的客户端分配权限
  2. 发送整个现有身份集合,并附加新的身份条目(这也确保了具有signInType的现有身份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)

azure-ad-b2c microsoft-graph-sdks microsoft-graph-api

8
推荐指数
1
解决办法
4481
查看次数

将 Graph SDK 升级到 5.0 - 对类型 IAuthenticationProvider 的引用声称它是在 Microsoft.Graph.Core 中定义的,但找不到

步骤:从 VS2022 (.NET 7) 中的模板创建示例项目,并进行身份验证和图形 -> 工作

将 Graph Core 更新至 3.01,并将 Graph 更新至。5.1 ->

Could not load type 'Microsoft.Graph.IAuthenticationProviderOption' from assembly 'Microsoft.Graph.Core

请帮忙

.net c# microsoft-graph-sdks microsoft-graph-api

7
推荐指数
1
解决办法
5514
查看次数

如何使用固定输入创建 GraphServiceClient 的 IAuthenticationProvider 对象

我正在尝试从我的 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 的类,但是它不清楚要添加什么参数或如何创建这个对象。有没有人以前尝试过这个,构建客户端并提供所需凭据的正确方法是什么?

java sharepoint microsoft-graph-sdks microsoft-graph-api

6
推荐指数
2
解决办法
5949
查看次数

如何使用 Microsoft Graph 从任意一封电子邮件发送电子邮件

我正在使用 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)

email asp.net-core microsoft-graph-sdks microsoft-graph-api

6
推荐指数
2
解决办法
6980
查看次数

GraphServiceClient 并获取附加数据

我使用 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

6
推荐指数
1
解决办法
1496
查看次数

Microsoft Graph Batch API 并发请求减少至 4 个,而 Outlook 的并发请求为 200 个

我们使用 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

6
推荐指数
1
解决办法
646
查看次数

Microsoft Graph SDK for .NET 是否自动处理速率限制?

Microsoft 将某些 Graph 端点的速率限制为每 10 分钟 10,000 个请求(来源)。如果达到限制,Retry-After标头会指示在发送另一个请求之前要等待多长时间。

这是由 Graph SDK 自动处理的吗?如果没有,呼叫者应该采取什么步骤?

c# azure-active-directory microsoft-graph-sdks microsoft-graph-api

5
推荐指数
1
解决办法
2532
查看次数

Microsoft Graph:无法按二进制 singleValueExtendedProperty 进行筛选

我正在尝试根据我已经有值的二进制扩展属性从 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 的过滤器表达式与单个扩展属性和值限制不匹配。

我使用了与字符串类型的扩展属性相同的过滤器语法,并且效果很好,所以我认为这是一个二进制属性这一事实与问题相关。

microsoft-graph-sdks microsoft-graph-api

5
推荐指数
1
解决办法
634
查看次数