クロスドメイン ライブラリを使用してアドインから SharePoint のデータにアクセスするAccess SharePoint data from add-ins using the cross-domain library

SharePoint アドインを作成するときは通常、さまざまなソースからデータを取り込む必要があります。When you build SharePoint Add-ins, you usually have to incorporate data from various sources. ただし、セキュリティ上の理由から、ブロック メカニズムによって一度に複数のドメインとの通信は防止されます。But for security reasons, blocking mechanisms prevent communication with more than one domain at a time. このようなセキュリティ メカニズムはほとんどのブラウザーに実装されており、ドメイン間のクライアント側の呼び出しが困難、または不可能になります。These security mechanisms are implemented in most browsers, making it difficult or impossible to accomplish client-side calls across domains.

ユーザーがアドイン ドメインからページを要求すると、クライアント側の通知はそのドメインにのみ限定されます。When a user requests a page from your add-in domain, the client-side communication is bound only to that domain. アドインでは、そのページから同じドメイン内の別のリソースにのみ、クライアント側呼び出しを発行できます。Your add-in can issue client-side calls from the page only to other resources in the same domain. ただし、アドインでは通常、そのシナリオを実行するために、SharePoint ドメインなど他のドメインからのリソースを必要とします。However, add-ins usually require resources from other domains, such as the SharePoint domain, to fulfill their scenarios. 使用するページのコードでは、SharePoint ドメインへのリクエストを発行してもブラウザーでブロックされる場合があります。In the code on your page, you may try to issue a request to the SharePoint domain, which is blocked by the browser. 通常は [アクセスが拒否されました] というエラーが表示されます。You usually see an Access is denied error. エラーはリクエストしたリソースへのアクセス許可がないことを示すものではありませんが、大抵は、指定したリソースに対してリクエストを発行できません。The error doesn't imply that you don't have permissions to the requested resources but, most likely, you can't even issue a request to the mentioned resources.

クロスドメイン ライブラリを使用する場合は、ドメイン内の Web ページからアドインのドメイン、および SharePoint ドメイン内のデータにアクセスできます。When you use the cross-domain library, the webpages in your add-in can access data in your add-in domain and the SharePoint domain. クロスドメイン ライブラリは JavaScript ファイル (SP.RequestExecutor.js) 形式のクライアント側の代替手段です。このファイルは、リモート アドインで参照できる SharePoint Web サイトでホストされます。The cross-domain library is a client-side alternative in the form of a JavaScript file (SP.RequestExecutor.js) that is hosted on the SharePoint website that you can reference in your remote add-in. クロスドメイン ライブラリを使用すると、プロキシ経由でリモート アドイン ページ内の複数のドメインとの対話型操作が可能になります。The cross-domain library lets you interact with more than one domain in your remote add-in page through a proxy. これは、サーバーではなくクライアントでアドイン コードを実行する場合や、SharePoint とリモート インフラストラクチャの間にファイアウォールなどの接続の遮蔽物がある場合に適したオプションです。It is a good option if you like your add-in code to run on the client instead of on the server, and if there are connectivity barriers, such as firewalls, between SharePoint and your remote infrastructure.

ホスト Web 内のデータへのアクセスが可能です。たとえば、アドインに関係なく、エンド ユーザーが対話できるリストにアクセスできます。You can access data in the host web—for example, you can access lists that end users interact with regardless of your add-in. あるいは、使用しているアドインに特定的にプロビジョニングされているリストなど、アドイン Web にあるデータにアクセスできます。Or you can access data in the add-in web, such as lists specifically provisioned for your add-in. アドインでは、そのアドインにテナント スコープのアクセス許可があり、アドイン カタログを使用したバッチ インストールとして展開されていれば、その他のサイト コレクションや Web サイトにアクセスすることもできます。Add-ins can also access other site collections and websites as long as the add-in has tenant-scoped permissions and it has been deployed as a batch installation by using the add-in catalog.

注意

このトピックでは、アドイン ドメインとはアドイン ページをホストするドメインを意味します。In this topic, add-in domain refers to the domain that hosts the add-in pages. つまり、プロバイダー向けのホスト型アドインのリモート Web アプリケーションのドメインですが、アドイン ページはアドイン Web の SharePoint 内で、ホスト型 Web ドメインを呼び出すものでもかまいません。This can be the domain of a remote web application in a provider-hosted add-in, but add-in pages can also be on SharePoint in the add-in web and make calls to the host web domain. 後者の場合、アドイン ドメインはアドイン Web のドメインです。In the latter scenario, the add-in domain is the domain of the add-in web.

この記事の主な例では、アドイン Web 上のデータを読み取り、それを Web ページに表示するアドインの作成方法を示します。The main example in this article shows how to build an add-in that reads data on the add-in web and displays it on a webpage. 次の手順のセクションでは、主な例に基づいて作成されたシナリオについて説明します。The Next steps section shows more scenarios that build on top of the main example.

前提条件Prerequisites

この記事に示されている例を行うには、次のものが必要です。To follow the examples in this article, you need the following:

クロスドメイン ライブラリを使用したアドイン Web 上のデータの読み取りRead data on the add-in web using the cross-domain library

この例では、SharePoint の外部でホストされている単純なページがあり、Representational State Transfer (REST) エンドポイントを使用して SharePoint Web サイト (アドイン Web) 内のデータを読み取っています。In this example, there is a simple page hosted outside of SharePoint that uses a Representational State Transfer (REST) endpoint to read data in a SharePoint website (the add-in web). クロスドメイン ライブラリではアドイン Web が必要であるため、このシナリオで開始するのは良い方法です。Because the cross-domain library requires an add-in web, it makes sense to start with this scenario.

アドイン Web からデータを読み取るには、次のことを実行する必要があります。To read data from the add-in web, you must do the following:

  1. SharePoint アドインと Web プロジェクトを作成します。Create a SharePoint Add-in and web projects.

  2. アドイン Web でリスト アイテムを作成します。Create list items on the add-in web. この手順により、アドインの展開時にアドイン Web が作成されるようになります。This step also ensures that an add-in web is created when users deploy the add-in.

  3. クロスドメイン ライブラリを使用してリスト アイテムを読み取るアドイン ページを作成します。Create an add-in page that uses the cross-domain library to read the list items.

次の図に、アドイン Web 上のデータを表示する Web ページを示します。The following figure shows a webpage that displays the data on the add-in web.

クロス ドメイン読み取り項目のサンプル結果画面

SharePoint アドインと Web プロジェクトを作成する方法To create a SharePoint Add-in and web projects

  1. 管理者として Visual Studio を開きます Open Visual Studio as administrator. (これを行うには、[スタート] メニューの [Visual Studio] アイコンを右クリックし、[管理者として実行] を選択します)。(To do this, right-click the Visual Studio icon on the Start menu, and select Run as administrator.)

  2. SharePoint 用アドイン テンプレートを使用して新しいプロジェクトを作成します。Create a new project by using the Add-in for SharePoint template. Visual Studio の [SharePoint 用アドイン] テンプレートは、[テンプレート] > [Visual C#] > [Office SharePoint] > [アドイン] にあります。The Add-in for SharePoint template in Visual Studio is located under Templates > Visual C# > Office SharePoint > Add-ins.

  3. デバッグに使用する SharePoint Web サイトの URL を入力します。Provide the SharePoint website URL that you want to use for debugging.

  4. アドインのホスティング オプションとして [プロバイダー向けのホスト型] を選択します。Select Provider-hosted as the hosting option for your add-in.

    注意

    SharePoint ホスト型アドインでクロスドメイン ライブラリを使用することもできます。You can also use the cross-domain library in a SharePoint-hosted add-in. ただし、SharePoint ホスト型アドインでは、アドイン ページは既にアドイン Web にあり、その場合はリスト アイテムの読み込みにクロスドメイン ライブラリは必要ありません。However, in a SharePoint-hosted add-in, the add-in page is already on the add-in web, in which case it wouldn't need the cross-domain library to read the list items. ホスト Web 上にあるデータを読み取る SharePoint でホストされているアドイン サンプルについては、「SharePoint ホスト型アドインでクロスドメイン ライブラリを使用する (REST) 」またはこの記事の後半の「ホスト Web からのデータ アクセス」を参照してください。For a SharePoint-hosted add-in sample that reads data on the host web, see Use the cross-domain library in a SharePoint-hosted add-in (REST) or see Access data from the host web later in this article.

アドイン Web でリスト アイテムを作成するにはTo create list items on the add-in web

  1. ソリューション エクスプローラーで SharePoint アドイン プロジェクトを右クリックします。Right-click the SharePoint Add-in project in Solution Explorer. [追加] > [新しいアイテム] を選択します。Select Add > New Item.

  2. [Visual C# アイテム] > [Office/SharePoint] > [リスト] の順に選択します。Select Visual C# Items > Office/SharePoint > List. リストの名前を [お知らせ] に設定します。Set the name of your list to Announcements.

  3. [お知らせ] > [Elements.xml] をダブルクリックします。Double-click Announcements > Elements.xml. 次の XML ノードを ListInstance 要素の子として貼り付けます。Paste the following XML nodes as children of the ListInstance element.

    <Data>
        <Rows>
            <Row>
                <Field Name="Title">Lorem ipsum 1</Field>
                <Field Name="Body">Sed ut perspiciatis, unde omnis iste...</Field>
            </Row>
            <Row>
                <Field Name="Title">Lorem ipsum 2</Field>
                <Field Name="Body">Sed ut perspiciatis, unde omnis iste...</Field>
            </Row>
        </Rows>
    </Data>
    

クロスドメイン ライブラリを使用するアドイン ページを作成するにはTo create an add-in page that uses the cross-domain library

  1. \*\*ソリューション エクスプローラー\**で Web プロジェクトの **Default.aspx\** をダブルクリックします。Double-click **Default.aspx** in the web project in **Solution Explorer**.
  2. 以下のコードをコピーし、Default.aspx ファイルに貼り付けます。このコードは次のタスクを実行します。Copy the following code and paste it in the Default.aspx file. The code performs the following tasks:

    • Microsoft CDN から jQuery ライブラリを読み込みます。Loads the jQuery library from the Microsoft CDN.

    • 結果のプレースホルダーを提供します。Provides a placeholder for the result.

    • クエリ文字列からアドイン Web の URL を抽出します。Extracts the add-in web URL from the query string.

    • jQuery の getScript 関数を使用して、クロスドメイン ライブラリ JavaScript を読み込みます。Loads the cross-domain library JavaScript by using the getScript function in jQuery.

      関数によって必要なリソースが読み込まれ、指定された関数の実行が続行されます。これにより、クロスドメイン ライブラリが読み込まれ、後続のコードで利用できるようになります。The function loads the required resources and then continues to the specified function, ensuring that the cross-domain library is loaded and available to use by the subsequent code.

    • \*\*RequestExecutor\*\* オブジェクトのインスタンスを作成します。既定では、RequestExecutor はアドイン Web をコンテキスト サイトとして使用します。Instantiates the **RequestExecutor** object. By default, RequestExecutor uses the add-in web as the context site.

      注意

      (REST) またはオブジェクト (JSOM)。(REST) or object (JSOM). AppContextSite の詳細については、この記事で後述する「ホスト Web からのデータ アクセス」を参照してください。To learn more about AppContextSite, see Access data from the host web later in this article.

    • リスト アイテム エンドポイントへの REST 呼び出しを発行します。Issues a REST call to the list items endpoint.

    • 成功した実行を処理し、Web ページにリスト アイテムを表示します。Handles successful completion, displaying the list items on the webpage.

    • エラーを処理し、リモート Web ページにエラー メッセージを表示します。Handles errors, displaying the error message on the webpage.

  
<html>
    <head>
        <title>Cross-domain sample</title>
    </head>
    <body>
        <!-- This is the placeholder for the announcements -->
        <div id="renderAnnouncements"></div>
        <script 
            type="text/javascript" 
            src="//ajax.aspnetcdn.com/ajax/jQuery/jquery-1.7.2.min.js">
        </script>
        <script type="text/javascript">
          var hostweburl;
          var appweburl;

          // Load the required SharePoint libraries
          $(document).ready(function () {
            //Get the URI decoded URLs.
            hostweburl =
                decodeURIComponent(
                    getQueryStringParameter("SPHostUrl")
            );
            appweburl =
                decodeURIComponent(
                    getQueryStringParameter("SPAppWebUrl")
            );

            // resources are in URLs in the form:
            // web_url/_layouts/15/resource
            var scriptbase = hostweburl + "/_layouts/15/";

            // Load the js files and continue to the successHandler
            $.getScript(scriptbase + "SP.RequestExecutor.js", execCrossDomainRequest);
          });

          // Function to prepare and issue the request to get
          //  SharePoint data
          function execCrossDomainRequest() {
            // executor: The RequestExecutor object
            // Initialize the RequestExecutor with the add-in web URL.
            var executor = new SP.RequestExecutor(appweburl);

            // Issue the call against the add-in web.
            // To get the title using REST we can hit the endpoint:
            //      appweburl/_api/web/lists/getbytitle('listname')/items
            // The response formats the data in the JSON format.
            // The functions successHandler and errorHandler attend the
            //      sucess and error events respectively.
            executor.executeAsync(
                {
                  url:
                      appweburl +
                      "/_api/web/lists/getbytitle('Announcements')/items",
                  method: "GET",
                  headers: { "Accept": "application/json; odata=verbose" },
                  success: successHandler,
                  error: errorHandler
                }
            );
          }

          // Function to handle the success event.
          // Prints the data to the page.
          function successHandler(data) {
            var jsonObject = JSON.parse(data.body);
            var announcementsHTML = "";

            var results = jsonObject.d.results;
            for (var i = 0; i < results.length; i++) {
              announcementsHTML = announcementsHTML +
                  "<p><h1>" + results[i].Title +
                  "</h1>" + results[i].Body +
                  "</p><hr>";
            }

            document.getElementById("renderAnnouncements").innerHTML =
                announcementsHTML;
          }

          // Function to handle the error event.
          // Prints the error message to the page.
          function errorHandler(data, errorCode, errorMessage) {
            document.getElementById("renderAnnouncements").innerText =
                "Could not complete cross-domain call: " + errorMessage;
          }

          // Function to retrieve a query string value.
          // For production purposes you may want to use
          //  a library to handle the query string.
          function getQueryStringParameter(paramToRetrieve) {
            var params =
                document.URL.split("?")[1].split("&amp;");
            var strParams = "";
            for (var i = 0; i < params.length; i = i + 1) {
              var singleParam = params[i].split("=");
              if (singleParam[0] == paramToRetrieve)
                return singleParam[1];
            }
          }
        </script>
    </body>
</html>

ソリューションをビルドして実行するにはTo build and run the solution

  1. F5 キーを選択します。Select the F5 key.

    注意

    F5 キーを押すと、Visual Studio がソリューションをビルドして、アドインを展開し、アドインのアクセス許可ページを開きます。When you select F5, Visual Studio builds the solution, deploys the add-in, and opens the permissions page for the add-in.

  2. [信頼する] ボタンを選択します。Select the Trust It button.

  3. [サイト コンテンツ] ページのアドイン アイコンを選択します。Select the add-in icon on the Site Contents page.

ダウンロード可能なコード サンプルを使用する場合は、コード ギャラリーから次を取得できます。If you prefer downloadable code samples, you can get the following from the code gallery:

ソリューションのトラブルシューティングTroubleshooting the solution

このエラー メッセージが表示される場合…If you see this error message… 次を試します…Try…
「申し訳ございません。サイトへのアクセス中に問題が発生しました。エラーを修正するボタンもありますが、問題は解決されません。」"Sorry, we had some trouble accessing your site.There is also a button to fix the error, but it doesn't correct the problem." Internet Explorer のセキュリティ ゾーンに関する既知の問題に該当する可能性があります。「SharePoint アドインで Internet Explorer の異なるセキュリティ ゾーンを横断してクロスドメイン ライブラリを操作する」をご覧ください。You may have hit a known problem with security zones in Internet Explorer; see Work with the cross-domain library across different Internet Explorer security zones in SharePoint Add-ins.
「必要な機能がお使いのブラウザーでサポートされていません。"The required functionalities are not supported by your browser. IE 8 以上または他の最新ブラウザーを使用していることを確認してください。Please make sure you are using IE 8 or above, or other modern browser. 'X-UA-Compatible' メタ タグが 'IE=8' 以上に設定されていることを確認してください。」Please make sure the 'X-UA-Compatible' meta tag is set to be 'IE=8' or above." クロスドメイン ライブラリでドキュメント モードが IE8 以上である必要があります。The cross-domain library requires a document mode of IE8 or later. 一部のシナリオでは、ドキュメント モードが既定で IE7 に設定されています。In some scenarios, the document mode is set to IE7 by default. Internet Explorer 開発者ツールを使用して、ページのドキュメント モードを判断し、変更することができます。You can use the Internet Explorer developer tools to determine and change the document mode of your page. 詳細については、「文書の互換性の定義」を参照してください。For more information, see Defining Document Compatibility.
「[種類] が定義されていません。"'Type' is undefined. さらに、アドインで JavaScript Object Model (JSOM) を使用しています。」Additionally, your add-in uses the JavaScript Object Model (JSOM)." JSOM は Microsoft Ajax ライブラリの Type.registerNamespace メソッドを使用して SP 名前空間を登録します。次のコードを使用して、お使いのページから Microsoft Ajax ライブラリにリファレンスを追加してください。The JSOM uses the Type.registerNamespace method in the Microsoft Ajax library to register the SP namespace. Use the following code to add a reference to the Microsoft Ajax library from your page:

HTML <script type="text/javascript" src="//ajax.aspnetcdn.com/ajax/4.0/1/MicrosoftAjax.js"></script>

次の手順: その他のクロスドメイン ライブラリ シナリオNext steps: more cross-domain library scenarios

この記事では、REST エンドポイントにクエリして、SharePoint でホストされていないアドイン ページを使用してアドイン Web からデータを読み取る方法を説明します。次のシナリオを参照して、クロスドメイン ライブラリの詳細を確認することもできます。This article shows how to query a REST endpoint to read data from the add-in web by using an add-in page that is not hosted on SharePoint. You can also explore the following scenarios and details about the cross-domain library.

JSOM を使用したアドイン Web からのデータの読み取りUse the JSOM to read data from the add-in web

設定によっては、REST ではなく JSOM を使用してアドイン Web からデータのクエリを実行することもできます。JSOM でクロスドメイン ライブラリを使用するには、追加タスクを実行する必要があります。Depending on your preference, you might want to use the JSOM instead of REST to query data from the add-in web. You must complete additional tasks to use the cross-domain library with JSOM:

  • アドイン ページで SharePoint JSOM を参照します。Reference the SharePoint JSOM in your add-in page.

  • \*\*ProxyWebRequestExecutorFactory\*\* オブジェクトを初期化し、コンテキスト オブジェクトのファクトリとして設定します。Initialize the **ProxyWebRequestExecutorFactory** object and set it as the factory of the context object.
  • SharePoint オブジェクトにアクセスして、リストからデータを読み取ります。Access the SharePoint objects to read the data from the list.

  • コンテキストでオブジェクトを読み込み、クエリを実行します。Load the objects in the context and execute the query.

タスクの実行方法を示すコード サンプルについては、SharePoint-Add-in-JSOM-CrossDomain をご覧ください。For a code sample that shows how to perform the tasks, see SharePoint-Add-in-JSOM-CrossDomain.

JSOM の使用方法の詳細については、「SharePoint 用アドインでの JavaScript オブジェクト モデル (JSOM) の使用」を参照してください。For more information about how to use the JSOM, see Using the JavaScript object model (JSOM) in add-ins for SharePoint.

ホスト Web からのデータ アクセスAccess data from the host web

このページの例では、アドイン Web からデータを読み取る方法を示します。The example on this page shows how to read data from the add-in web. クロスドメイン ライブラリではアドインが最初にコンテキスト サイトとして使用されるため、これが開始の例として適しています。This works fine as the starting example because the cross-domain library initially uses the add-in as the context site. ただし、ホスト Web のデータへのアクセスが必要なシナリオも多数あります。However, there are many scenarios where you want to access data on the host web. いくつかのタスクでは、ホスト Web 上のデータにアクセスする必要があります。A few tasks are required to access data on the host web:

  • ホスト Web をクロスドメイン ライブラリのコンテキスト サイトとして設定します。Set the host web as the context site for the cross-domain library.

  • アドインに適切なアクセス許可を付与します。Provide appropriate permissions to the add-in.

AppContextSite エンドポイント (REST) またはオブジェクト (JSOM) を使用すると、コンテキスト サイトを変更できます。You can change the context site by using the AppContextSite endpoint (REST) or object (JSOM). 次の例では、REST エンドポイントを使用してコンテキスト サイトを変更する方法を示します。The following example shows how to change the context site by using the REST endpoint:

executor.executeAsync(
    {
        url:
            appweburl +
            "/_api/SP.AppContextSite(@target)/web/title?@target='" +
            hostweburl + "'",
        method: "GET",
        headers: { "Accept": "application/json; odata=verbose" },
        success: successHandler,
        error: errorHandler
    }
);

次のコード例で、JSOM を使用してコンテキスト サイトを変更する方法を示します。The following code example shows how to change the context site using JSOM:

context = new SP.ClientContext(appweburl);
factory = new SP.ProxyWebRequestExecutorFactory(appweburl);
context.set_webRequestExecutorFactory(factory);
appContextSite = new SP.AppContextSite(context, hostweburl);

this.web = appContextSite.get_web();
context.load(this.web);

既定では、アドインにはアクセス許可が付与されますが、ホスト Web にはアクセス許可が付与されません。次の例は、ホスト Web からデータを読み取るためのアクセス許可要求を宣言するマニフェスト セクションを示しています。By default, your add-in has permissions to the add-in web, but not to the host web. The following example shows a manifest section that declares a permission request to read data from the host web:

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

必ずアドイン Web で (空白のページまたはリストのような) リソースを作成して、クロスドメイン ライブラリを使用するために必要な、アドイン Web のプロビジョニングを行います。Ensure that you create a resource on the add-in web (such as an empty page or list) to force the provisioning of the add-in web, which is required to use the cross-domain library.

サイト コレクション間でのデータ アクセスAccess data across site collections

クロスドメイン ライブラリでは、同じテナント内のサイト コレクション間でデータにアクセスできます。サイト コレクション間でデータにアクセスするには、いくつかのタスクを実行する必要があります。With the cross-domain library, you can access data across site collections in the same tenant. There are some tasks that you need to complete to access data across site collections:

  • テナント内のデータにアクセスするためのアクセス許可要求を追加します。Add a permission request to access data in the tenant.

  • コードで、クエリするサイト コレクションにコンテキスト サイトを切り替えます。In your code, switch the context site to the site collections that you want to query.

  • アドインをアドイン カタログに追加します。Add the add-in to the add-in catalog.

  • テナント スコープ アドインとして Web サイトにアドインを展開します。Deploy the add-in as a tenant-scoped add-in to a website. たとえば、テナント スコープ アドインとして展開する方法については、「テナント スコープ アドインでクロスドメイン ライブラリを使用する (REST)」のコード サンプルに関する説明をご覧ください。For an example on how to deploy as a tenant-scoped add-in, see the description of the Use the cross-domain library in a tenant-scoped add-in (REST) code sample.

アドインには、テナントからデータにアクセスするためのアクセス許可も必要です。次の例は、テナントからデータを読み取るためのアクセス許可要求を宣言するマニフェスト セクションを示しています。Your add-in also needs permission to access data from the tenant. The following example shows a manifest section that declares a permission request to read data from the tenant:

<AppPermissionRequests>
  <AppPermissionRequest 
    Scope="http://sharepoint/content/tenant" 
    Right="Read" />
</AppPermissionRequests>

コードでコンテキスト サイトに切り替えるには、「ホスト Web からのデータ アクセス」セクションと同様に、AppContextSite エンドポイント (REST) またはオブジェクト (JSOM) を使用します。To switch the context site in your code, use the AppContextSite endpoint (REST) or object (JSOM), just like in the Access data from the host web section.

REST エンドポイントの残りの部分は次のとおりです: /_api/SP.AppContextSite(@target)/web/title?@target='weburl'。JSOM でのオブジェクトのインスタンス化の方法を示す例: appContextSite = new SP.AppContextSite(context, weburl);Here is a reminder of the REST endpoint: /_api/SP.AppContextSite(@target)/web/title?@target='weburl', and an example on how to instantiate the object in JSOM: appContextSite = new SP.AppContextSite(context, weburl);.

開発者は、テナント スコープ アドインをアドイン カタログからのみ展開できます。As a developer, you can only deploy tenant-scoped add-ins from the add-in catalog. アドイン カタログはオンプレミスまたは SharePoint Online 環境に対してプロビジョニングできます。You can provision an add-in catalog to your on-premises or SharePoint Online environments. アドイン カタログへのアドインのアップロードは、ドキュメント ライブラリへのファイル アップロードと同じように簡単にできます。Uploading your add-in to the add-in catalog is as simple as uploading a file to a document library. 詳細な手順については、「アプリ カタログを使ってカスタム ビジネス アプリを SharePoint Online 環境で利用できるようにする」を参照してください。For detailed instructions, see Use the app catalog to make custom business apps available for your SharePoint Online environment.

アドイン カタログからは、テナント内の 1 つ以上の Web サイトにアドインを展開することができます。From the add-in catalog, you can deploy the add-in to one or more websites in the tenant. アドインはテナント内のデータへのアクセスが許可されているため、1 つの Web サイトに展開するだけで、テナント全体のデータにアクセスできます。Because your add-in has permissions to access data in the tenant, you only have to deploy to one website to access data on the whole tenant. アドイン カタログからアドインを展開する方法については、「カスタム アドインを展開する」を参照してください。For instructions on how to deploy an add-in from the add-in catalog, see Deploy a custom add-in

サイト コレクション間でデータにアクセスする方法を示すコード サンプルをダウンロードするには、「テナント スコープ アドインでクロスドメイン ライブラリを使用する (REST)」をご覧ください。To download a code sample that shows how to access data across site collections, see Use the cross-domain library in a tenant-scoped add-in (REST).

異なるセキュリティ ゾーン間での呼び出しの発行Issuing calls across different security zones

クロスドメイン ライブラリでは、アドイン ページの IFrame でホストされているプロキシ ページを使用して通信を可能にします。The cross-domain library uses a proxy page that is hosted in an IFrame on the add-in page to enable communication. アドイン ページと SharePoint Web サイトが別のセキュリティ ゾーンにある場合、認証 Cookie は送信されません。When the add-in page and SharePoint website are in different security zones, authorization cookies can't be sent. 認証 Cookie がなく、IFrame がプロキシ ページを読み取ろうとすると、SharePoint サインイン ページにリダイレクトされます。If there are no authorization cookies, and the IFrame tries to load the proxy page, it is redirected to the SharePoint sign-in page. SharePoint サインイン ページは、セキュリティ上の理由から IFrame には組み込めません。The SharePoint sign-in page can't be contained in an IFrame for security reasons. これらのシナリオでは、ライブラリはプロキシ ページを読み込めず、SharePoint と通信することはできません。In these scenarios, the library cannot load the proxy page, and communication with SharePoint is not possible.

ただし、これらのシナリオには解決策があります。解決策は、アドイン ページをアドイン Web でホストされているページでラップする アプリホスト パターン です。明らかなセキュリティ境界がない場合でも、クロスドメイン ライブラリを使用するアドインではアプリホスト パターンを使用することをお勧めします。詳しくは、「 SharePoint アドインで Internet Explorer の異なるセキュリティ ゾーンを横断してクロスドメイン ライブラリを操作する」をご覧ください。However, there is a solution for these scenarios. The solution is the apphost pattern, which consists in wrapping the add-in pages in a page hosted in the add-in web. It's a good idea to use the apphost pattern in add-ins that use the cross-domain library, even if there are no evident security boundaries. For more information, see Work with the cross-domain library across different Internet Explorer security zones in SharePoint Add-ins.

SharePoint ホスト型アドインのその他のリモート ホストからデータへのアクセスAccess data from an additional remote host in a SharePoint-hosted add-in

既定では、適切なアクセス許可があれば、SharePoint ホスト型アドイン はホスト Web へのクロスドメイン呼び出しを発行できます。ただし、SharePoint ホスト型アドイン は AppPrincipalAllowedRemoteHostUrl 属性でリモート ホストを指定することもできます。これにより、アドイン Web やほかの場所にある別のホストからもクロスドメイン呼び出しを発行できます。By default, a SharePoint-hosted add-in is allowed to issue cross-domain calls to the host web, provided that it has proper permissions. However, a SharePoint-hosted add-in can also specify a remote host in the AllowedRemoteHostUrl attribute of its AppPrincipal. This effectively lets you issue cross-domain calls from the add-in web and from another host elsewhere.

クロスドメイン ライブラリを使用する SharePoint ホスト型アドインのサンプルをダウンロードする場合は、「コード サンプル: SharePoint ホスト型アドイン (REST) でクロスドメイン ライブラリを使用する」をご覧ください。To download a sample of a SharePoint-hosted add-in that uses the cross-domain library, see Code sample: Use the cross-domain library in a SharePoint-hosted add-in (REST).

関連項目See also