からめもぶろぐ。

SharePoint が得意なフレンズなんだね!すごーい!

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

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

github.com

実行方法

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

  • [名前]: DynamicsCrmAddIn
  • [種類]: Web アプリケーションや Web API
  • [サインオン URL]: https://<テナント名>.onmicrosoft.com/DynamicsCrmAddIn
  • [アプリケーションID/URL]: https://<テナント名>.onmicrosoft.com/DynamicsCrmAddIn

[構成] にクライアント ID が表示されるので控えておきます。

f:id:karamem0:20160624185549p:plain

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

var clientId = "<clientid>";
var authUrl = "https://login.windows.net/common/oauth2/authorize";
var resource = "https://<tenantname>.crm7.dynamics.com";

SharePoint Online に開発者向けサイトを作成します。サイトに上記のコードを配置します。出力ログに配置先の URL が出力されるので控えておきます。

f:id:karamem0:20160624184506p:plain

Azure Active Directory の [応答 URL] を以下の URL に変更します。

https://<取得した URL>/Pages/WebPart.aspx

f:id:karamem0:20160624190234p:plain

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

f:id:karamem0:20160624190406p:plain

マニフェスト ファイルをダウンロードして oauth2AllowImplicitFlow を true に変更しアップロードします。詳細については日本マイクロソフトの松崎剛さんのブログを参考にしてください。

blogs.msdn.microsoft.com

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

f:id:karamem0:20160624191353p:plain

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

f:id:karamem0:20160624191730p:plain

補足

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

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