事象
Microsoft Graph と SharePoint Online のリソース固有の同意について | Microsoft Learn
AzureサービスプリンシパルでMicrosoft Graphの Sites.Selected を付与しつつ、アクセスしたいSharePointサイト側からもサービスプリンシパルに対して読み込み or 書き込み権限を与えることで特定のSharePointサイトのみの権限に絞ることができます。
しかし、「ファイルを検索する」エンドポイントをGraphから叩いてみるとエラーになりました。
/search(q='{search-text}') は使えない
「ファイルを検索する」エンドポイントの /search(q='{search-text}') は Sites.Selected だけだと権限が不足しているようで失敗するようでした。
どうしてもこれを使いたいときはより強い権限の Files.Read.All などが必要なようです。
( Files.Read.All は組織のすべてのSharePointファイルを閲覧できてしまうため使いたくない)
今回は探したいファイルがある程度どこにあるか分かっていたので、 root:/...:/children: パスを使ってファイルを探すことで解決しました。
