«Недостаточно прав для завершения операции» при попытке подключения к Microsoft Graph - PullRequest
4 голосов
/ 30 июня 2019

Я хочу настроить приложение 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

Что я должен сделать, чтобы преодолеть описанную выше проблему?

1 Ответ

1 голос
/ 01 июля 2019

Вы использовали поток учетных данных клиента для получения токена доступа в своем коде, поэтому вам необходимо разрешение приложения вместо делегированного разрешения.

enter image description here

...