💻

SharePoint Online から Dynamics 365 の Web API を実行する

2022/01/01に公開

はじめに

SharePoint ホスト型アドインを使用して SharePoint Online から Dynamics 365 の Web API を実行します。これまでは SharePoint Online から Dynamics 365 に接続するにはプロキシ サーバー経由で実行する方法しかありませんでした。しかし Dynamics CRM 2016 から REST Web API が強化されたので、いろいろなデータを簡単に取得できるようになりました。

サンプル コード

https://github.com/karamem0/samples/tree/main/sharepoint-addin-read-dynamics

実行方法

Azure AD アプリケーションの登録

Azure AD にアプリケーションを登録します。

アプリケーションの 応答 URL に以下の URL を設定します。

https://{{tenant-name}}.sharepoint.com/sites/{{dev-site-name}}/SampleApplication/Pages/WebPart.aspx

アプリケーションのアクセス許可に Dynamics CRM Online を追加します。

今回は Implicit Flow を使うので、アプリケーションのマニフェストを編集し oauth2AllowImplicitFlow を有効にします。

コードの修正

プロジェクトの Scripts/WebPart.js を開き、クライアント ID および Dynamics 365 の接続先の URL を変更します。

var clientId = "{{client-id}}";
var authUrl = "https://login.microsoftonline.com/{{tenant-name}}/oauth2/authorize";
var resource = "https://{{tenant-name}}.crm.dynamics.com";
var redirectUrl = "https://{{tenant-name}}.sharepoint.com/sites/{{dev-site-name}}/SampleApplication/Pages/WebPart.aspx";

開発者向けサイトにアプリを配置します。

アプリ パーツの貼り付け

開発者向けサイトに新しいページを作成し、アプリ パーツを貼り付けます。

Dynamics 365 からデータを取得して取引先企業の一覧を表示します。

おわりに

Dynamics 365 Web API は CORS をサポートしていますので、JavaScript しか記述できない SharePoint ホスト型アドインでも API を実行できます。また、Dynamics 365 Web API は他の Office 365 API と同じく OAuth によるアクセス許可を行います。SharePoint Online はすでに Office 365 にサインインした状態ですので、その情報を使用してシングル サインオンでアクセス トークンを取得できます。

なお、SharePoint ホスト型アドインはインストール時に一意の URL が作成されるため、Azure AD の応答 URL はアプリの配置ごとに書き換える必要があります。応答 URL が一致しない場合はエラーとなるため注意してください。

Discussion