SharePoint Online にアプリからアクセスする

ちょっと調べたので。基本的には Consuming the SharePoint Online REST API from PowerShell: Part 2 に書いてる通りにすればSharePoint (Onlineなど)のREST APIにアクセスするためのアクセストークンが取得できます。(PowerShellスクリプトですけど参考になるかと)

Azure ADを使った場合とちょっと異なるのはSharePoint Onlineそのものは正確にはACS(なつかしい)を使ってるという点でしょうか。ただアクセストークンを取得するための(OAuthな)フローなどはたいして差が無いので十分参考になるかと思います。

いくつか決め打ちでスクリプト内に設定されている値ですが、00000003-0000-0ff1-ce00-000000000000 はSharePoint Onlineを表すPrincipalです。他のサービス用もあるので同じように利用する場合は Get-MsolServicePrincipal とかで取得すればいいでしょう。

後はアプリ(クライアント)を登録するわけですが、SharePointアドインという名称になるようですね(?)
登録するためのUIは普通に辿れなさそうなので(えー)、以下のURLからどうぞ。

https://<SharePointWebsite>/_layouts/15/AppRegNew.aspx

登録後、SharePointへの権限やスコープを設定してあげます。こちらも以下のURLから。

https://<SharePointWebsite>/_layouts/15/AppInv.aspx

ドメインはlocalhostでもいいですが、どちらもリダイレクトURLはSharePointのURL(https://___.sharepoint.com/ など)にしないとうまくいかなさそう。
スコープ等の設定やフローはこちらを参考に。

Webサイトの読み取りでよければ以下のような感じです。

<AppPermissionRequests AllowAppOnlyPolicy="true">
    <AppPermissionRequest Scope="http://sharepoint/content/sitecollection/web" Right="Read"/>
</AppPermissionRequests>

最後に、最初に紹介したスクリプトなりでClientID、Client Secret使えばアクセストークンを取得できるので、AuthorizationヘッダーにBearerとしてつけてあげれば無事呼び出せます。

基本的にOffice 365系のREST APIのドキュメントって一部分はすごく詳しいけど補足説明やら前提の説明が全然ないのですごくわかりにくいですが、OAuthやACS周りと登場人物の把握がちゃんとできれば比較的理解しやすいかなと思います。

という感じで個人メモでした。

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト /  変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト /  変更 )

%s と連携中