🔗
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