Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/266.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 无法添加到其他用户日历_Php_Microsoft Graph Api_Microsoft Graph Sdks - Fatal编程技术网

Php 无法添加到其他用户日历

Php 无法添加到其他用户日历,php,microsoft-graph-api,microsoft-graph-sdks,Php,Microsoft Graph Api,Microsoft Graph Sdks,我正在尝试允许用户将项目添加到其他用户的日历中。 用户登录并获取令牌,如下所示 const AUTHORIZE_ENDPOINT = '/oauth2/v2.0/authorize'; const TOKEN_ENDPOINT = '/oauth2/v2.0/token'; const SCOPES = 'profile openid email User.Read Calendars.ReadWrite Calendars.Read Calendars.Read

我正在尝试允许用户将项目添加到其他用户的日历中。 用户登录并获取令牌,如下所示

const AUTHORIZE_ENDPOINT = '/oauth2/v2.0/authorize';
const TOKEN_ENDPOINT     = '/oauth2/v2.0/token';
const SCOPES             = 'profile openid email User.Read Calendars.ReadWrite Calendars.Read Calendars.Read.Shared Calendars.ReadWrite Calendars.ReadWrite.Shared';


$graph = new Graph();
$graph->setAccessToken($token);
$response = $graph->createRequest("GET", "/me")->setReturnType(Model\User::class)->execute(); 
登录的用户可以使用添加到自己的日历中

$request = $graph->createRequest("post", '/me/events');
$request->attachBody($data);
$response = $request->execute(); 
但是,当我尝试添加到另一个用户时

$request = $graph->createRequest("post", '/anotheruser/events');
$request->attachBody($data);
$response = $request->execute(); 
我明白了

Resource not found for the segment
已经做了管理员授权同意,所以一切都应该是好的


有什么建议吗?

Url应该类似于
Users('anotheruser')/events
。因为您直接说的是另一个用户/事件。服务未将另一个用户识别为有效段并引发错误

如果要访问其他用户的数据,必须使用以下url:

/users/{id | userPrincipalName}
您的请求格式错误,最后您向一个不存在的资源发送了一个请求,因此Graph不知道该做什么。
在您的情况下,只需预先添加
/users
(有关更多信息,请参阅)

因此,您的请求可能如下所示:

$request = $graph->createRequest("post", '/users/anotheruser/events');
请记住,如果您以用户()身份登录,则您尝试访问的日历必须已与登录用户共享。否则,由于缺少特权,它将失败,因为Graph只允许编辑与用户共享的内容。您还需要权限
日历.Read.Shared
和/或
日历.ReadWrite.Shared
(您似乎已经获得了这些权限)。
如果您获得访问权限,并且自动拥有对所有用户的完全访问权限,则无需共享日历

当前,Graph API仅支持访问共享日历,但不支持编辑/更改共享状态或查看与用户共享哪些日历的操作。但是,您可以通过outlook或powershell手动更改共享状态