Создать новое событие, используя Outlook Api в PHP (используя метод POST) - PullRequest
0 голосов
/ 07 сентября 2018

Я создаю новое событие в php, используя метод POST в Outlook API. Я перешел по этой ссылке https://docs.microsoft.com/en-us/outlook/rest/php-tutorial для реализации метода событий GET. Код авторизации, который я использую, следующий

$oauthClient = new \League\OAuth2\Client\Provider\GenericProvider([
      'clientId'                => 'APP ID',
      'clientSecret'            => 'APP Password',
      'redirectUri'             => 'http://localhost/CodeIgniter-3.1.9/authorize',
      'urlAuthorize'            => 'https://login.microsoftonline.com/common/oauth2/v2.0/authorize',
      'urlAccessToken'          => 'https://login.microsoftonline.com/common/oauth2/v2.0/token',
      'urlResourceOwnerDetails' => '',
      'scopes'                  => ' Calendars.ReadWrite Calendars.ReadWrite.Shared Calendars.Read.Shared'
    ]);

для получения токена это код

  $accessToken = $oauthClient->getAccessToken('authorization_code', ['code' => $_GET['code']]);

Теперь, чтобы создать событие из приложения PHP для календаря Outlook. После получения токена я написал следующий код для создания нового события методом POST.

$url = "https://graph.microsoft.com/beta/me/events";
        $data_json = '{
            "subject": "Lets go for lunch",
            "body": {
              "contentType": "HTML",
              "content": "Does late morning work for you?"
            },
            "start": {
                "dateTime": "2017-04-15T12:00:00",
                "timeZone": "Pacific Standard Time"
            },
            "end": {
                "dateTime": "2017-04-15T14:00:00",
                "timeZone": "Pacific Standard Time"
            },
            "location":{
                "displayName":"Harrys Bar"
            },
            "attendees": [
              {
                "emailAddress": {
                  "address":"ehteshamanwar_86@hotmail.com",
                  "name": "Ehtesham Anwar"
                },
                "type": "required"
              }
            ]
          }' ;

        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_POST, true);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $data_json);
        curl_setopt($ch, CURLOPT_HTTPHEADER, array(
        "Content-Type: application/json",
        "Authorization: Bearer " . $accessToken->getToken(),
        "Content-length: ".strlen($data_json))
        );
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
         $result = curl_exec($ch);
         echo "<pre>";
         print_r($result);

ответ на этот вызов

 {  "error": {
"code": "ErrorAccessDenied",
"message": "Access is denied. Check credentials and try again.",
"innerError": {
  "request-id": "7accd0e6-428c-4d71-....",
  "date": "2018-09-06T11:18:29"
}  }

Приложение Microsoft в центре разработки

Пожалуйста, помогите, как я могу решить эту проблему

1 Ответ

0 голосов
/ 10 сентября 2018

"message": "Доступ запрещен. Проверьте учетные данные и повторите попытку.",

Как и в сообщении, существует проблема аутентификации пользователя.

Используйте консоль или любой другой способ для вывода токена. И проверьте ваш redirectUri в центре разработки и настройках проекта.

Оцените эффективность. Я предлагаю вам следовать Microsoft Graph SDK для PHP , чтобы выполнять все наши вызовы API событий.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...