🔗
SharePoint Online の REST API を対話なしで実行する
はじめに
SharePoint 2013 では REST API を使用できます。しかし、Microsoft のドキュメントを見ると、プロバイダー ホスト型 SharePoint アドインから OAuth で使用する場合を想定しているようです。バッチ プログラムのように特定のユーザーを指定して対話なしでアプリケーションを実行できるかどうかがわからなかったため、調査しました。
SharePoint Server (オンプレミス) の場合
オンプレミス環境では NTLM を利用できます。つまり、NetworkCredential に Windows のユーザー名とパスワードを設定することで対応可能です。
SharePoint Online の場合
SharePoint Online では NTLM を利用できないため、OAuth を使用する必要があります。SharePoint が提供する SharePoint アドインの OAuth の仕組みでは、アクセス トークンを取得する際にログイン UI が表示されます。しかし、この方法はバッチ実行には適していません。ログイン UI をスキップするには、Azure AD の OAuth で grant_type=password
を指定します。これにより、ユーザー名とパスワードを渡してアクセス トークンを取得できます。ただし、grant_type=password
は推奨されていない方法ですので、UI があるアプリケーションの開発ではログイン UI を表示することを推奨します。
以下にサンプルを掲載します。
注意点は以下の 3 点です。
- Azure AD でアプリケーションを登録し、Client ID を取得する
- 登録したアプリケーションに対して管理者の同意をする
- SharePoint Online へのアクセス許可を設定する
Discussion