2017-11-23 24 views
1

組織内の客室リストをベータ版のuser_findrooms経由で取得しようとしています。Microsoft Graph API FindRooms ErrorAccessDenied

私はphp-connect-sampleを使用しており、ここにissueを作成した後に指示されました。

アプリケーションが登録されており、必要な権限を持っています。ユーザーはログインし、正しくリダイレ​​クトされます。私はこのような/me/findRoomsエンドポイントを取得しようとすると、私は成功し/meエンドポイント

を取得することができます:

$graph = new Graph(); 
$graph->setApiVersion('beta'); 
$graph->setAccessToken($_SESSION['access_token']); 

$rooms = $graph->createRequest("get", "/me/findRooms") 
         ->setReturnType(Model\EmailAddress::class) 
         ->execute(); 

をその後、私は次のエラーを取得する:

Client error: GET https://graph.microsoft.com/beta/me/findRooms resulted in a 403 Forbidden response: { "error": { "code": "ErrorAccessDenied", "message": "Access is denied. Check credentials and try again.", (truncated...)

だから、パーミッションのようですエラー。

は、我々は我々のアプリのために、以下のグラフの権限を持っている:

委任アクセス権User.ReadBasic.AllUser.Read.All

アプリケーション権限:追加の権限が/me/findRoomsにアクセスするために必要とされるCalendars.ReadWriteUser.Read.All

+0

ユーザーのいる環境でのみ実行している場合は、アプリの権限を指定する必要はありません。定義した委任されたアクセス許可が、ベータエンドポイントの部屋を照会するのに十分であるように見えますが、その他の認証の問題が発生しています。その他のコンテキスト:[AAD V2 auth](https://docs.microsoft.com/en-us/azure/active-directory/develop/active-directory-v2-scopes)を使用していますか?また、[トークンをデコードする](http://jwt.calebb.net/)の場合、 'scp'コレクションには何が表示されますか?返信@DmitryPimenov ため –

+0

おかげではい、私はトークンをデコードするとき、それはSCPの下に次の内容が含まれてい のOAuthトークンを取得するにはアズールのAD v2.0のエンドポイントを使用しています: '「Calendars.ReadWrite User.Read」 ' – karel

答えて

0

あなたの認証フローでは、このAPIは会議室の空き容量を見つけるためにディレクトリ内のすべてのユーザーを読み取る必要があるため、スコープ内でUser.Read.Allの代わりにUser.Read.Allを指定する必要があります。 Here is more information about how to request such scopes during the /authorize and /token requests

+0

ありがとうございます。私はアプリでこの許可を得ましたが、スコープと一緒にそれを渡しませんでした。 – karel

関連する問題