프로그래밍 방식으로 온라인 모임을 만들지 만 403 오류가 발생하는 Microsoft 그래프 API
Microsoft Graph Api (PHP-> msGraph SDK)를 사용하여 온라인 회의를 만들고 있습니다. I 'm Facing 403 오류가 누군가 나를 도울 수 있습니다.
$clientId = "***********************************"; $clientSecret = "***********************************";
$tenantId = '***********************************'; $responseUri = "http://localhost:8888/moodle39";
$guzzle = new \GuzzleHttp\Client(); $url = 'https://login.microsoftonline.com/' . $tenantId . '/oauth2/v2.0/token'; $token = json_decode($guzzle->post($url, [
'form_params' => [
'client_id' => $clientId, 'client_secret' => $clientSecret,
'scope' => 'https://graph.microsoft.com/.default',
'grant_type' => 'client_credentials',
],
])->getBody()->getContents());
$accessToken = $token->access_token;
//Create a new Graph client.
$graph = new Graph(); $graph->setAccessToken($accessToken); $onlinemeet->startDateTime = "2020-09-02T14:30:34.2444915";
$onlinemeet->endDateTime = "2020-09-02T15:30:34.2444915"; $onlinemeet->subject = "Test Meeting";
$jso = json_encode($onlinemeet);
$user = $graph->createRequest("POST", "/me/onlineMeetings")->addHeaders(array("Content-Type" => "application/json"))->attachBody($jso)->setReturnType(User::class) ->execute();
예외-클라이언트 오류 : POST https://graph.microsoft.com/beta/me/onlineMeetings 결과 403 금지 된 응답 : { "error": { "code": "Forbidden", "message": "", "innerError": { "request-id": "bd43aa57-511e-4 (잘림 ... )
Azure Portal에서 애플리케이션을 만드는 동안
API 권한으로 액세스 권한을 부여했습니다.
GraphApi-> 위임 된 권한-> onlinemeetings.ReadWrite.
누군가 PHP에서 적절한 예제 또는 적절한 구문으로 나를 도울 수 있습니까?
감사합니다 !!..
답변
클라이언트 자격 증명 흐름 을 사용 하여 / me 끝점 을 호출하는 토큰을 가져올 수 없습니다 . 클라이언트 자격 증명 흐름의 경우 일반적으로 백그라운드에서 실행되어야하고 사용자와 즉시 상호 작용하지 않아야하는 서버 간 상호 작용에 사용됩니다 (로그인 한 사용자 없음). 를 들어 / 나 엔드 포인트, 당신이 사용해야하므로 사용자 로그인이 필요합니다 일반적으로 인증 코드의 흐름을 .
참고로 Microsoft Graph에서 / beta 버전의 API 는 변경 될 수 있습니다. 프로덕션 애플리케이션에서 이러한 API를 사용하는 것은 지원되지 않습니다. 따라서 /v1.0 버전 을 사용하는 것이 좋습니다 .
여기 를 참조 하십시오 .
최신 정보:
유사한 샘플이 많이 있습니다. 도움이 되었기를 바랍니다.
OAuth 2.0 PHP 샘플 코드 .
PHP에서 Auth0을 사용한 인증 및 권한 부여 .