标签: microsoft-graph

如何使用新的microsoft graph api创建身份验证令牌?

我一直在用这个:

https://github.com/Azure-Samples/active-directory-php-graphapi-web.git
Run Code Online (Sandbox Code Playgroud)

访问图表api,这是有效的.我的Azure注册应用程序能够查询API以获取目录中的用户列表.

但现在我想在目录中列出用户的文件夹.这一页

http://graph.microsoft.io/docs
Run Code Online (Sandbox Code Playgroud)

说网址应该是:

https://graph.microsoft.com/v1.0/me/drive/root/children
Run Code Online (Sandbox Code Playgroud)

当我在我的REST调用中使用该URL时,我得到了

"code": "InvalidAuthenticationToken",
"message": "CompactToken parsing failed with error code: -2147184105"
Run Code Online (Sandbox Code Playgroud)

有道理,它从中得到一个令牌

https://graph.windows.net
Run Code Online (Sandbox Code Playgroud)

所以,我迷路了.有许多不同版本的API,来自消费级onedrive(以前称为skydrive),第一个图形api(我通过https://graph.windows.net访问),office 365 API(我通过https访问: //login.microsoftonline.com)现在图形api(以前的通用api https://graph.microsoft.com)我只是不知道从哪里开始寻找正确的信息.

我目前正在使用PHP,我确信微软的支持平台列表会相当低,但是关于访问令牌生成如何在最新的API中与o365 api相对于其他图表的任何方向api(在graph.windows.net)将不胜感激.

有人像我一样困惑吗?是否有一些中心参考解释了这些api与如何访问它们之间的所有差异?

php azure office365 azure-ad-graph-api microsoft-graph

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

office365微软图全文搜索

Microsoft Graph是否在v1.0或beta版中提供任何全文搜索功能?

具体来说,我想搜索电子邮件正文内容.我尝试了以下请求,只是为了测试API的不同部分:

https://graph.microsoft.com/v1.0/me/messages?$filter=body/content eq 'test'
Run Code Online (Sandbox Code Playgroud)

与响应消息

The property 'Body' does not support filtering.
Run Code Online (Sandbox Code Playgroud)

并要求

https://graph.microsoft.com/v1.0/me/messages?$filter=startswith(subject,'test') 
Run Code Online (Sandbox Code Playgroud)

与响应消息

'contains' and 'startswith' are not supported for filtering.  Use Search instead.
Run Code Online (Sandbox Code Playgroud)

最后一个响应提到了一些搜索功能,但我在文档中找不到这个.

rest office365 microsoft-graph

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

使用Microsoft Graph API显示即将到来的Office 365用户生日列表

使用Microsoft Graph API,我想创建一个所有Office 365用户的生日列表,但我目前无法获得具有相关属性的用户列表.

要设置此列表,我需要通过Graph API公开以下属性:

  • ID
  • 显示名称
  • 通过UserPrincipalName
  • 生日

使用Graph Explorer,https://graph.microsoft.io/en-us/graph-explorer,我试图请求我自己的属性(graph.microsoft.com/v1.0/Me/?$select=id ,displayName,userPrincipalName,birthday)有效:

{
    "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#users(id,displayName,userPrincipalName,birthday)/$entity",
    "id": "aaaaaaaa-bbbbb-ccccc-a3c6-63817c4bbbca",
    "displayName": "Harold van de Kamp",
    "userPrincipalName": "harold@company.com",
    "birthday": "2000-08-15T00:00:00Z"
}
Run Code Online (Sandbox Code Playgroud)

当我查询所有用户(graph.microsoft.com/v1.0/Users)时,这也有效,但不包含所有必需的属性

但是,当我查询具有所需属性的所有用户(graph.microsoft.com/v1.0/Users/?$select=id,displayName,userPrincipalName,birthday)时,我收到以下错误:

{
    "error": {
        "code": "InternalServerError",
        "message": "This operation is not yet supported.",
        "innerError": {
            "request-id": "06a7b9c9-2fcd-4f26-a86c-fe9704a35a1e",
            "date": "2016-06-11T11:15:45"
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

查询所述测试API(graph.microsoft.com/beta/Users/?$select=id,displayName,userPrincipalName,birthday)导致同样的错误.

问题:我知道为什么会出现这个错误,我们怎么能让它工作?

奖金问题:是否可以直接查询即将到来的15个生日列表?

office365 microsoft-graph

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

Microsoft Teams(测试版)API:看来您可能没有此调用的权限。请修改您的权限

我使用了Graph Explorer来针对我的Office 365配置文件进行测试。一切正常,都可以接受Microsoft Teams(测试版)API。如果我使用GET https://graph.microsoft.com/beta/me/joinedTeams,我会得到

状态码401-您似乎没有此呼叫的权限。请修改您的权限。

{
    "error": {
        "code": "",
        "message": "Authorization has been denied for this request.",
        "innerError": {
            "request-id": "a1733d8a-5adb-45ad-a0ad-463595d71a89",
            "date": "2017-06-09T14:33:11"
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

似乎没有为Microsoft Teams授予权限的选项。有人知道吗?

microsoft-graph

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

企业版Exchange Server上的MicrosoftGraph

MicrosoftGraph API(特别是WebHooks)是否可以用于企业/本地Exchange服务器(而不是Office 365)上的帐户。我看到的有关设置OAuth身份验证所需的应用程序的所有文档都使用Azure。

microsoft-graph

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

图谱API:PUT/beta/groups/<groupId> /团队验证错误

问题

PUT请求/beta/groups/<groupId>/team失败,并出现以下错误:

{
    "error": {
        "code": "AuthenticationError",
        "message": "Error authenticating with resource.",
        "innerError": {
            "request-id": "e4385864-85e4-4fa6-8878-458988c584e4",
            "date": "2017-11-10T10:29:39"
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

提供了一个Bearer令牌,它是通过使用委托权限生成的Group.ReadWrite.All.

端点记录在此处.

到目前为止我找到的东西

看起来,它与团队资源有关.以下请求不起作用:

  • PUT /beta/group/<groupId>/team
  • GET /beta/me/joinedTeams

两者都失败了AuthenticationError.

更新

/beta/group/<groupId>/team 现在工作.

microsoft-graph microsoft-teams

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

混合环境,404具有内部部署邮箱,200个用于Exchange联机

我编写了一个能够与Exchange Online帐户通信的应用程序,我正在尝试测试以查看使其与在Hybrid中运行的内部部署帐户一起使用所需的步骤.

我有:

  • Windows Server 2012 R2
  • 兑换2016 CU8(带/PrepareAD跑)
  • 互联网访问路径/api/v2.0/autodiscover/autodiscover.json
  • 运行HCW
  • AD Connect正在运行
  • Active Directory与Azure Active Directory同步
  • 我已注册的应用程序的权限看起来很好(阅读日历事件/读写日历事件)

不幸的是,我404在尝试访问日历活动时遇到了问题:

curl -v -H 'Content-Type: application/json' -H "Authorization: Bearer eyJ0eXAiOiJKV1QiLCJub25jZSI6IkFRQUJBQUFBQUFCSGg0a21TX2FLVDVYcmp6eFJBdEh6RE1mbEZNYTYwaktGRHRhUXp0ZGVkM2V6Z0ZfUzlLMjdDRmQxSHlfZGdRcnR6WlJBczRDV095R3E1Vl9OZW9MSFNKTGpzblNCSDNCQU9oQnBzU18wVmlBQSIsImFsZyI6IlJTMjU2IiwieDV0IjoiU1NRZGhJMWNLdmhRRURTSnhFMmdHWXM0MFEwIiwia2lkIjoiU1NRZGhJMWNLdmhRRURTSnhFMmdHWXM0MFEwIn0.eyJhdWQiOiJodHRwczovL2dyYXBoLm1pY3Jvc29mdC5jb20iLCJpc3MiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC8wODY1YjBhYi02ZjYwLTQzNjMtYTEwZi05NWU5ZTc5ZjlmODEvIiwiaWF0IjoxNTE4OTc5NzQ0LCJuYmYiOjE1MTg5Nzk3NDQsImV4cCI6MTUxODk4MzY0NCwiYWlvIjoiWTJOZ1lKRE0reDVXbGhWNUlrajUwbDB4THNacEFBPT0iLCJhcHBfZGlzcGxheW5hbWUiOiJIQy1XZWIiLCJhcHBpZCI6ImVkZjlkY2M0LThjNjAtNDg3ZS1hYmUyLTI4MjcyYTRlZGJlMCIsImFwcGlkYWNyIjoiMiIsImlkcCI6Imh0dHBzOi8vc3RzLndpbmRvd3MubmV0LzA4NjViMGFiLTZmNjAtNDM2My1hMTBmLTk1ZTllNzlmOWY4MS8iLCJvaWQiOiJkNTUzMTE2My01MTcxLTRmZjctYTNjMS04NWFlNzUzMjkzNTIiLCJyb2xlcyI6WyJNYWlsLlJlYWRXcml0ZSIsIkNvbnRhY3RzLlJlYWRXcml0ZSIsIkRpcmVjdG9yeS5SZWFkLkFsbCIsIk1haWwuUmVhZCIsIkNhbGVuZGFycy5SZWFkV3JpdGUiXSwic3ViIjoiZDU1MzExNjMtNTE3MS00ZmY3LWEzYzEtODVhZTc1MzI5MzUyIiwidGlkIjoiMDg2NWIwYWItNmY2MC00MzYzLWExMGYtOTVlOWU3OWY5ZjgxIiwidXRpIjoiNkxJT3g1bWQ4ay05ajhBUUtiY2hBQSIsInZlciI6IjEuMCJ9.AWt_ANsH8sk15WeH1AgD6SD0Ki8VILMvzkbSMju_YFGKc5cVkrGp7Skzt64uDM8rI6Py5Y-1c3srXwON2oSihkRskfz5vG4nIlbFnuYd3Ij2Vz1ktpNnCeMAnAK2T8ifk2visRSvchRbuBNZZyamwRjActdDF9BS8NygUgmmygK4mPjOIab17PJPz5PisvRbCA2jBLWLvbu9RYrLH-xGuoLd2PLTbsn2WSVi3er4XztZCcK7XfVWe-0wjrV6qBufd5z0hH_KpQLdzPtLOzSUGUAcXGa0mBPceTWULQvQ-LPcAJO57F0ir5k22fWzlkOfUxQb9eGWREUm1cAPWk3CPw" "https://graph.microsoft.com/v1.0/users/oq@healthcentrified.co.uk/calendar/events"
*   Trying 137.116.241.64...
* Connected to graph.microsoft.com (137.116.241.64) port 443 (#0)
* found 148 certificates in /etc/ssl/certs/ca-certificates.crt
* found 592 certificates in /etc/ssl/certs
* ALPN, offering http/1.1
* SSL connection using TLS1.2 / ECDHE_RSA_AES_256_CBC_SHA384
*        server certificate verification OK
*        server certificate status verification …
Run Code Online (Sandbox Code Playgroud)

outlook-restapi microsoft-graph

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

使用Microsoft图形C#ASP.NET将新文件上传到OneDrive

尝试将文件上传到尚不存在的onedrive。我设法得到它来更新现有文件。但是似乎无法弄清楚如何创建一个全新的文件。我已经使用Microsoft.Graph库完成了此操作。

以下是用于更新现有文件的代码:

public async Task<ActionResult> OneDriveUpload()
    {
        string token = await GetAccessToken();
        if (string.IsNullOrEmpty(token))
        {
            // If there's no token in the session, redirect to Home
            return Redirect("/");
        }

        GraphServiceClient client = new GraphServiceClient(
            new DelegateAuthenticationProvider(
                (requestMessage) =>
                {
                    requestMessage.Headers.Authorization =
                        new AuthenticationHeaderValue("Bearer", token);

                    return Task.FromResult(0);
                }));


        try
        {
            string path = @"C:/Users/user/Desktop/testUpload.xlsx";
            byte[] data = System.IO.File.ReadAllBytes(path);
            Stream stream = new MemoryStream(data);
            // Line that updates the existing file             
            await client.Me.Drive.Items["55BBAC51A4E4017D!104"].Content.Request().PutAsync<DriveItem>(stream);

            return View("Index");
        }
        catch (ServiceException ex)
        { …
Run Code Online (Sandbox Code Playgroud)

c# onedrive microsoft-graph

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

Microsoft Office 365组:访客用户无法使用图形端点进行驱动器调用

我们的应用程序通过对驱动器项执行Get调用来读取组驱动器内容.这曾经适用于内部成员和访客用户.它现在为内部成员工作,但不再为访客用户工作.以下是样本调用.

https://graph.microsoft.com/v1.0/drives/b!uey_5Lpf8Eu0-5HlGvJvFga89s_hTxNAg9kSsTlOBqajRqOF3ec-Rp6uqtbLNt4w/items/016GMDDVB74LSDDYRHHRHJ5KV5HHVXWQTT?$ select = webUrl,name

我们得到的回应是这样的

{
"error": {
    "code": "unauthenticated",
    "message": "Role Claim does not exist for Service Asserted App V1.",
    "innerError": {
        "request-id": "5ed31bd5-283c-4ce2-a6d6-a249f94ae9ee",
        "date": "2018-06-27T09:39:01"
    }
}
Run Code Online (Sandbox Code Playgroud)

以前工作得很好,最近Drive API有什么变化吗?我已检查更改的日志,但在上一版本中没有提到任何相关内容.

office365 onedrive microsoft-graph

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

每当我的MS Graph API邮件搜索找不到结果时,为什么会出现网关超时?

从本周开始gateway timeout,当我的邮件搜索找不到任何结果时,我突然从Graph中获取信息。

我正在使用这样的查询:

https://graph.microsoft.com/v1.0/users/shared@notreal.com/mailFolders/AllItems/messages?$search="participants:some.person@fake.com"&$select=from,subject,HasAttachments,Id,SentDateTime&$top=100
Run Code Online (Sandbox Code Playgroud)

这是一个图查询,它从shared@notreal.com发送者或接收者包括的Office 365邮箱中请求最多100封电子邮件some.person@fake.comshared@notreal.com是与拨打电话的帐户共享的邮箱。

我的应用已通过oauth2身份验证代码流进行了身份验证,并已获得所有必要的权限。

This has been working for about a year. But starting a few days ago, this query only succeeds if results are found. When no results are found, the query takes 30 seconds, Graph returns UnknownError and the response is 504 with reasonphrase Gateway Timeout.

It seems as though something has changed in the Graph API - or perhaps in the Office 365 API, …

office365api microsoft-graph microsoft-graph-mail

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