是否有任何微软办公室图形API可用,我可以获得可用和繁忙的会议室详细信息.
我的要求是,我将传递一些开始日期时间和结束日期时间,并期望所有可用和繁忙的房间列表.
至于我知道我们可以添加room outlook门户管理部分.
我通过以下findRoomLists和findrooms API他们只是提供房间信息而不是状态忙/免费.我想要状态也是图API中有任何功能.
https://graph.microsoft.com/beta/me/findRoomLists https://graph.microsoft.com/beta/me/findRooms 已经通过以下链接但没有帮助.
如何使用Microsoft Graph API显示当前可用会议室列表
无法使用Office365 Calendar API获取会议室的所有繁忙时间
谢谢Ajay Tiwari
我一直在用这个:
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与如何访问它们之间的所有差异?
MicrosoftGraph API(特别是WebHooks)是否可以用于企业/本地Exchange服务器(而不是Office 365)上的帐户。我看到的有关设置OAuth身份验证所需的应用程序的所有文档都使用Azure。
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文档后,我确定可以使用OData查询参数过滤组成员,因为https://developer.microsoft.com/zh-cn/graph/docs/api-reference/v1.0/api/group_list_members
请求GET URL- https: //graph.microsoft.com/v1.0/groups/ {groupId} / members?filter = startswith(givenname,'V')
在上面的URL中,从https://graph.microsoft.com/v1.0/groups使用了groupId
但是,当我尝试使用工作帐户登录名使用Graph Explorer(https://developer.microsoft.com/en-us/graph/graph-explorer)获取结果时,它不起作用。
我也尝试在SDK中使用它(我已经使用Microsoft graph API SDK在我的代码中实现了graph API),但仍然遇到相同的错误。
并给出以下错误-
{“错误”:{“代码”:“ Request_UnsupportedQuery”,“消息”:“当前不支持对参考属性查询的指定过滤器。”,“ innerError”:{“ request-id”:“ 96f3ffef-56f5- 42e3-82f2-64813106b729“,” date“:” 2018-02-13T10:59:39“}}}
这是因为“成员”不是资源类型吗?所以它没有属性,所以我们不能过滤此结果?
如果是这样,那么还有其他方法可以获取已过滤的组成员吗?
在Github上也发布了问题-https: //github.com/microsoftgraph/microsoft-graph-docs/issues/2239
我编写了一个能够与Exchange Online帐户通信的应用程序,我正在尝试测试以查看使其与在Hybrid中运行的内部部署帐户一起使用所需的步骤.
我有:
/PrepareAD
跑)/api/v2.0
和/autodiscover/autodiscover.json
不幸的是,我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) 我在Web浏览器中使用以下方法来使用Microsoft Graph获取DriveItem的文件内容:
GET /drives/{drive-id}/items/{item-id}
// Get the @microsoft.graph.downloadUrl property of the returned DriveItem
GET {downloadUrl}
Run Code Online (Sandbox Code Playgroud)
这需要两个GET
电话。
我也知道这个API:
GET /drives/{drive-id}/items/{item-id}/content
Run Code Online (Sandbox Code Playgroud)
如此处记录:
但是/content
端点有两个问题:
如何在一个请求中获取DriveItem的文件内容?
尝试将文件上传到尚不存在的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) 我们的应用程序通过对驱动器项执行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有什么变化吗?我已检查更改的日志,但在上一版本中没有提到任何相关内容.
我正在使用Azure上托管的ASP.NET Core 2.0应用程序,并使用MSAL通过Microsoft对用户进行身份验证.我通过身份验证过程获取基本信息,如名称,用户名和组声明.但是,我想通过MS Graph访问一些其他信息,例如用户个人资料照片.初始身份验证和令牌获取平稳运行,并向https://graph.microsoft.com/beta/me
返回发送请求200 OK
.https://graph.microsoft.com/beta/me/photo/$value
然而,当试图打电话时,我得到一个401 - Unauthorized
回报.
我在这个问题上看到了其他几篇文章,但大多数人都认为开发人员忘记要求正确的同意,从错误的端点获取令牌或类似的问题.所有这些我都证实不是这样的.
我已经确认使用https://jwt.ms/在令牌中包含了适当的范围.我也尝试过要求更大的范围.目前我正在使用以下范围:openid profile User.ReadBasic.All User.Read.All User.ReadWrite Files.ReadWrite.All
.根据获取用户的beta参考,最少需要的权限是,User.Read
并根据获取照片的参考,最少需要的权限也是User.Read
.使用Graph Explorer我还确认我应该使用我的权限访问该照片,但是,我没有在我的个人资料上设置任何图片,因此它给了我一个404
回复.
我不知道为什么我无法访问个人资料照片,所以任何建议都非常感谢.如果您需要更多信息或详细信息,请告诉我们.如果相关,我有一个自定义中间件来处理读取用户信息的后验证过程,这也会对照片的MS Graph进行额外调用.
我也试过https://graph.microsoft.com/beta/users/{my-user-id}/photo/$value
产生相同的结果 - 图形浏览器中的404和我的代码中的401
这是我正在使用的代码.第一个代码段位于中间件中,该中间件将来自经过身份验证的用户的声明置于特定格式.我刚刚在返回时设置了一个断点并检查了响应对象.
public async Task GetUserPhotoAsync(string userid, HttpContext context)
{
HttpClient client = new HttpClient();
//client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
var result = await new TokenHelper(_settings).GetAuthenticationAsync(userid, context, new string[] { "User.ReadBasic.All", "User.Read.All", "User.ReadWrite", "Files.ReadWrite.All" });
var …
Run Code Online (Sandbox Code Playgroud)