Я хочу настроить приложение Symfony4 на чтение и отправку сообщений электронной почты с использованием библиотеки msgraph-sdk-php .
Мое приложение будет считывать и отправлять электронную почту.почта из одной учетной записи, пароль которой я не хочу раскрывать пользователям моего приложения.Таким образом, я не буду использовать OAuth для входа в систему.
Мой первый опыт был таким фрагментом кода (для получения профиля пользователя почтового ящика):
<?php
namespace App\Graph;
use Microsoft\Graph\Exception\GraphException;
use Microsoft\Graph\Graph;
use Microsoft\Graph\Model\User;
class GraphService
{
function sentTestMessage() {
$userId = "************************************";
$tenantId = "************************************";
$clientId = "************************************";
$clientSecret = "***************************";
$guzzle = new \GuzzleHttp\Client();
$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());
$accessToken = $token->access_token;
$graph = new Graph();
$graph->setAccessToken($accessToken);
$user=new \stdClass();
try {
$user = $graph->createRequest("GET", "/users/".$userId)
->setReturnType(User::class)
->execute();
} catch (GraphException $e) {
$user->getGivenName=$e->getMessage();
}
return "Hello, I am $user->getGivenName() ";
}
}
Но затем Symfony показываетСтраница исключения с этим сообщением:
Ошибка клиента: GET https://graph.microsoft.com/v1.0/users/...
в результате 403 Forbidden
ответ:
{
"ошибка": {
"code": "Authorization_RequestDenied",
"message": "Недостаточно прав для завершения операции (усечено ...)
Теперь работает тот же запроспри запуске в https://developer.microsoft.com/en-us/graph/graph-explorer с тем же пользователем, вошедшим в систему.
Это разрешения, которые я дал приложению:
![enter image description here](https://i.stack.imgur.com/NRdu6.png)
Что я должен сделать, чтобы преодолеть описанную выше проблему?