2016-07-12 23 views
0

デーモンアプリケーション(アプリケーションのみ、認証されていないユーザー)は、Microsoft Graph API経由でSharePoint Onlineコンテンツにアクセスできますか?そうでない場合、私の選択肢は何ですか?デーモンアプリケーションからSharePoint Onlineファイルにアクセス

私が試した:

https://graph.microsoft.com/v1.0/drives/<id> 

をしかし、アクセス拒否を得ました。 Office 365のグループ内のドライブにアクセスする

を経由して動作します:

https://graph.microsoft.com/v1.0/groups/<id>/drive 

これは私が認証トークンを取得する方法である:

https://login.microsoftonline.com/<tenant id>/oauth2/token 
resource=https://graph.microsoft.com 
grant_type=client_credentials 
client_id=<client id> 
client_secret=<client secret> 

答えて

0

あなたはグループのファイルを読み込むことができた理由は、そのAPP-ですトークンのみがGroup.Read.Allルールを持っています。 Files.Read.Allのようなアプリ専用スコープはありません。これにより、アプリケーションはSharePointオンラインサイトのすべてのファイルを読み取ることができます。

現在のところ、Microsoft Graph APIは、自分自身または他のユーザーが委任トークンを使用して自分自身に共有するファイルを取得するためのサポートのみを行っています。

ユーザーがログインできないようにするには、初めてアクセストークンを取得して手動でトークンを更新してアプリに保存することができます。その後、アクセストークンを使用してREST APIを呼び出し、アクセストークン/リフレッシュトークンが期限切れになったときに更新することができます。

この機能が必要な場合は、hereからフィードバックを送信することができます。

+0

ご回答ありがとうございます。デーモンアプリがリフレッシュトークンを使用して何ヶ月も実行できると言っていますか? 1日に1回実行する予定です。 – Christophe

+0

はい。リフレッシュトークンは14日間有効で、継続的に使用すると最大90日間有効です。 90日後、ユーザーは再認証を求められます。詳細はこちら[こちら](https://support.office。com/ja-jp/article/Session-timeouts-for-Office-365-37a5c116-5b07-4f70-8333-5b86fd2c3c40?ui = en-US&rs = en-US&ad = US) –

0

Build service and daemon apps in Office 365をチェックしましたか?基本的な考え方は、Azure AD Appを作成してApp-onlyトークンを使用することです。以下は、手順の概要です:

  • あなたのAzure ADのアプリケーションを作成し、あなたのトークン要求処理を確保するための証明書を作成します。 Azure AD Appマニフェストファイルの証明書情報を更新するには、 が必要です。
  • Azure AD Appの設定で、特定のアクセス許可を許可するように設定します。 「アプリケーションのアクセス権」リストの下にあります。

App-onlyトークンを使用すると、あなたのアプリケーションはあなたのAzure AD内の他の用途に代わることができます。 https://graph.microsoft.com/v1.0/{user's UPN or ID}/drive/root/childrenに電話して、Graph APIに基づいてそのユーザーのファイルを取得できます。私はSharePointリストとドキュメントライブラリのコンテンツにアクセスするためにこのアプローチを試しました。リスト項目を更新すると、Azure AD Appの名前に「変更者」が表示されました。 私はまた、Outlookにアクセスしてサービスアカウントに代わって電子メールを送信するのと同じアプローチを採用しました。詳細については、Send email on behalf of a service account using Office Graph API

を参照してください。アプリ専用のトークン設定についてご質問がある場合はお知らせください。

+0

ありがとうございます。 SharePointリストにアクセスするためのREST呼び出しの例を表示できますか?たとえば、mytenant.sharepoint.com/SiteNameというサイトのToDoListというタスクリストの項目にアクセスするにはどうすればよいですか? – Christophe

+0

完全版については、作成したばかりのhttps://github.com/frankchen76/MediumSample/tree/master/AppOnlySPOSampleを参照してください。 –

+0

ありがとう、私はこれが私が探しているものではないことを恐れています。私の質問は、グラフAPIを介してSPリストにアクセスする方法と、あなたのサンプルが電子メールにアクセスすること(グラフAPIなし)について理解しているところからです。 – Christophe

関連する問題