SharePoint Framework のデプロイを自動化する
はじめに
2017 年 11 月に SharePoint ALM API が提供されました。これにより、SharePoint アプリ (アドイン) や SharePoint Framework のアプリのビルドとデプロイを自動化できるようになりました。
じゃあ実際やってみたらどうなるのということでやってみました。
サンプル コード
実行手順
前提として gulp はインストールされている必要があります。
タスク
- マニフェストの cdnBasePath を書き換える。
- npm パッケージを復元する。
- ソース ファイルをビルド (
gulp bundle
) する。 - ソリューション パッケージを作成 (
gulp package-solution
) する。 - ソース ファイルをアップロードする。
- ソリューション パッケージをアプリ カタログにアップロードする。
- ソリューション パッケージを展開する。
- ソリューション パッケージをインストールする。
OAuth について
SharePoint の場合、Azure AD に登録したアプリではクライアント シークレットを使った Client Credentials Grant ができません。正確にはアクセス トークンは取得できるのですが、アクセス トークンを使って API を呼ぼうとすると Unsupported app only token.
というエラー メッセージが返されます。
証明書を使ってもいいのですが、とても面倒なので、SharePoint で提供されている OAuth (Azure ACS に基づいた承認フロー) を使用することにします。
AppRegNew.aspx
からアプリを登録します。
AppInv.aspx
からアクセス許可を設定します。AllowAppOnlyPolicy="true"
とするのがミソです。
アクセス許可を付与します。
これでクライアント シークレットを使ってアクセス トークンを取得する準備ができました。URL は https://login.microsoftonline.com
ではなく https://accounts.accesscontrol.windows.net
になります。また client_id
や resource
に設定する値も Azure AD とは異なりますので注意が必要です。[1]
-
このあたりの実装を詳しく知りたい場合は
TokenHelper.cs
を確認する必要があります。 ↩︎
Discussion