Я использую учетную запись организации Outlook. Моя цель - получить список событий календаря в контроллере Laravel. Шаги, за которыми я следовал:
Создано простое приложение в https://aad.portal.azure.com/. Я получил идентификатор приложения (клиента), идентификатор каталога, clientSecrets, идентификатор объекта / идентификатор клиента, который можно использовать для входа в систему и для получения дополнительных данных от Microsoft.
Создан контроллер в сети Laravel . php
Route::get('/graph', 'microsoftapi@getCalendarData');
Добавлен Microsoft Graph SDK для laravel.
https://github.com/microsoftgraph/msgraph-sdk-php composer require microsoft/microsoft-graph
My Laravel Код контроллера:
<?php
namespace App\Http\Controllers;
use App\User;
use Illuminate\Http\Request;
use Jumbojett\OpenIDConnectClient;
use GuzzleHttp\Client;
use Microsoft\Graph\Graph;
use Microsoft\Graph\Model;
class microsoftapi extends Controller
{
public $accesstoken;
public function __construct()
{
$guzzle = new Client();
$tenantId = 'common';
$url = 'https://login.microsoftonline.com/' . $tenantId . '/oauth2/token?api-version=1.0';
$token = json_decode($guzzle->post($url, [
'form_params' => [
'client_id' => '*******************',///$clientId,
'client_secret' => '*****************', // $clientSecret,
'resource' => 'https://graph.microsoft.com/',
'grant_type' => 'client_credentials',
],
])->getBody()->getContents());
$this->accessToken = $token->access_token;
}
public function getCalendarData(){
$graph = new Graph();
$graph->setBaseUrl("https://graph.microsoft.com/")
->setApiVersion("v1.0")
->setAccessToken($this->accessToken);
dd($graph);
$user = $graph->createRequest("GET","/users/abc@***********.com/calendar/events")
->addHeaders(array("Content-Type" => "application/json"))
->setReturnType(\Microsoft\Graph\Model\User::class)
->setTimeout("1000")
->execute();
echo "Hello, I am $user->getGivenName() ";
}
По dd($graph);
токовому выходу Я получаю как:
Microsoft\Graph\Graph {#221 ▼
-_accessToken: "eyJ0eXAiOiJKV1QiLCJub25jZSI6IjNueHRoZzZrMllaTVZsRTMzUmNHOVhMbG9TekJRcUhVTzRVY2xLanpGV1EiLCJhbGciOiJSUzI1NiIsIng1dCI6IllNRUxIVDBndmIwbXhvU0RvWWZvbWpxZmpZVSIsImtp ▶"
-_apiVersion: "v1.0"
-_baseUrl: "https://graph.microsoft.com/"
-_proxyPort: null
}
Итак, я правильно получаю токен доступа , Но, если я прокомментировал dd как // dd($graph);
, то getCalendarData
не работает. Мой вывод:
GuzzleHttp\Exception\ClientException
Client error: `GET https://graph.microsoft.com/v1.0/users/abc@********.com/calendar/events` resulted in a `401 Unauthorized` response: {"error":{"code":"NoPermissionsInAccessToken","message":"The token contains no permissions, or permissions can not be un (truncated...)
Кто-нибудь знает, в чем проблема?
Пожалуйста, дайте мне знать детали .. Пожалуйста, не присылайте ссылки Microsoft, которые мне трудно понять !!! !!
Пожалуйста, ответьте мне детали ..
Снимок экрана разрешения: