#microsoft-graph-api #microsoft-graph-calendar
#microsoft-graph-api #microsoft-график-календарь
Вопрос:
Пожалуйста, не сообщайте как дубликат, потому что все другие разделы не решили мою проблему, спасибо.
Я использую Microsoft Graph api для составления списка и создания событий календаря, однако, похоже, я не могу заставить конечную точку FindMeetingTimes работать.
Это мой URL для авторизации:
https://login.microsoftonline.com/consumers/oauth2/v2.0/authorize?client_id=xxxxxamp;response_type=codeamp;redirect_uri=xxxxxamp;response_mode=form_postamp;scope=openid profile User.ReadWrite User.ReadBasic.All Sites.ReadWrite.All Contacts.ReadWrite People.Read Notes.ReadWrite.All Tasks.ReadWrite Mail.ReadWrite Files.ReadWrite.All Calendars.ReadWriteamp;state=12345
Затем я запрашиваю токен доступа, используя те же области:
$request = json_decode($guzzle->post('https://login.microsoftonline.com/common/oauth2/v2.0/token', [
'headers' => [
'Content-Type' => 'application/x-www-form-urlencoded'
],
'form_params' => [
'client_id' => 'xxxxx',
'scope' => 'openid profile User.ReadWrite User.ReadBasic.All Sites.ReadWrite.All Contacts.ReadWrite People.Read Notes.ReadWrite.All Tasks.ReadWrite Mail.ReadWrite Files.ReadWrite.All Calendars.ReadWrite',
'code' => $auth_code,
'grant_type' => 'authorization_code',
'redirect_uri' => 'xxxxx',
'client_secret' => 'xxxxx'
],
])->getBody()->getContents());
После этого я пытаюсь использовать конечную точку FindMeetingTimes, используя:
$request = json_decode($guzzle->post('https://graph.microsoft.com/v1.0/me/findMeetingTimes', [
'headers' => [
'Authorization' => 'Bearer ' . $accessToken,
'Content-Type' => 'application/json',
],
'body' => '{
"attendees": [
{
"type": "required",
"emailAddress": {
"name": "My Name",
"address": "myemail@hotmail.com"
}
}
],
"timeConstraint": {
"activityDomain":"work",
"timeslots": [
{
"start": {
"dateTime": "2019-04-02T09:00:00",
"timeZone": "Pacific Standard Time"
},
"end": {
"dateTime": "2019-04-03T17:00:00",
"timeZone": "Pacific Standard Time"
}
}
]
}
}',
])->getBody()->getContents());
Однако она продолжает возвращаться:
401 - Unauthorized: Access is denied due to invalid credentials.
You do not have permission to view this directory or page using the credentials that you supplied.
Кто будет моим героем? :/
Комментарии:
1. Никто не может мне помочь с этим?
2. Используете ли вы рабочую или школьную учетную запись при аутентификации по своему URL-адресу авторизации?
3. Нет, просто обычная учетная запись Microsoft @CameronDowner
Ответ №1:
Это сделано специально. Из документации:
Обратите
findMeetingTimes
внимание, что в настоящее время действие доступно для рабочих или школьных почтовых ящиков Office 365, но не для личных, outlook.com почтовые ящики.