2016-03-29 13 views
12

私は、Office 365展開のテナント管理者です。 OneDriveのすべてのサイトにアクセスする必要がある内部システムがあります。テナントの管理者資格情報を使用してOAuthトークンを取得し、そのOAuthトークンを使用してSharePoint/OneDrive REST APIを使用してすべてのOneDriveサイトからファイルを取得しようとしています。すべてのユーザーのOneDriveのファイルへの管理者アクセスを取得する方法

テナント管理者のOAuthトークンでは、テナント管理者が所有するファイルまたはテナント管理者が共有するファイルのみを取得できます。他のユーザーのOneDriveからファイルを取得することはできません。

Microsoft Graph APIでも同じ結果が得られます。テナント管理者が所有するファイルまたはテナント管理者が共有するファイルのみを取得することができます。他のユーザーのOneDriveからファイルを取得することはできません。

1つの解決方法は、すべてのOneDriveサイトに対してサイトコレクション管理者にテナント管理者を追加することですが、これは実現可能なオプションではありません。

OneDrive管理者またはテナントの管理者資格情報を使用してOneDriveユーザーのファイルをすべて取得するためのAPIはありますか。

おかげで、 Abhi

+0

この回答とそのコメントは、あなたに役立つと思います。http://stackoverflow.com/questions/33755470/onedrive-for-business-api-daemon-tenant-with-app-only-token基本的に、あなたのアプリは「すべてのサイトコレクションにアイテムを読み書きする」権限を持っている必要があります。その後、API固有の方法で他のユーザーのファイルにアクセスできます。 OneDriveでは、ユーザーデータにアクセスするために 'https:// {tenant} -my.sharepoint.com/_api/v2.0/drives/ {user email}' URLプレフィックスを使用できます。SharePointでは、 'https :// {テナント} -my.sharepoint.com/personal/ {ユーザー固有の部分}/_ api/web/' – dtheodor

答えて

0

あなたが委任またはアプリケーションの権限のいずれかを使用してこれを行うことができます。どちらを選択するかは、アプリケーションの実行方法と使用しているOAUTHグラントフローによって異なります。

アプリケーションが対話ユーザー(つまり、実行中にその前に座っている)で実行されている場合は、委任されたアクセス許可とAuthorization Code Grant Flowを使用します。

アプリケーションがサービスとして実行されている(バックグラウンドで実行されている)場合は、アプリケーションのアクセス許可とClient Credentials Grant Flowを使用することをお勧めします。

許可モデルを選択した場合でも、アクセス許可スコープとエンドポイントは同じままです。

あなたはテナント内の他のユーザのファイルにアクセスするために、次の権限スコープのいずれかが必要です:Files.Read.AllFiles.ReadWrite.AllSites.Read.AllSites.ReadWrite.Allを。

他のユーザーのファイルを表示するには、そのユーザーのドライブに直接アクセスする必要があります。これは、ユーザのuserPrincipalNameを介して行われます。たとえば、ユーザーのドライブのルートにあるファイルを表示するには、

https://graph.microsoft.com/v1.0/users/{userPrincipalName}/drive/root/children 

が役に立ちます。

関連する問題