Office 365 API 入門


Office 365 API
(※ 現在、統一エンドポイントとして Microsoft Graph がご利用いただけます)

(Skype API は こちら)

こんにちは。

Office 365 は、昨今 多くのプログラマーが知っている REST によって連携が可能です。ここでは、これからはじめる方のために、アプリの登録から、OAuth / REST の処理 (プログラミング) までの全体の流れを紹介します。

 

開発準備

Office 365 API を使用したプログラミングでは OAuth を使用します。このため、あらかじめ皆さんが開発するアプリケーションを登録し、必要な情報をセットアップしておきます。(この登録作業は、サービス提供側の ISV 企業のみが実施すればよく、利用者・利用企業は不要です。後述の「Common Consent Framework と Multi-Tenant 対応」を参照してください。)

まず、Office 365 の管理者アカウントで Azure Portal (https://portal.azure.com/) にログインします。
画面左のナビゲーション メニューに [Azure Active Directory] があるので、これを選択します。

表示される画面で [New application registration] をクリックします。
表示される画面にアプリケーションの名前や、アプリケーションの URL などを入力してアプリケーションを登録します。(今回のサンプルでは、[Native] のアプリケーションではなく、 [Wep App / API] のアプリケーションとして登録してください。)

登録が完了したら、登録されたアプリケーションの Application Id (下図) をコピーしておきましょう。
これが、このあと使用する client id です。

アプリケーションの URL は [Reply URLs] として複数登録可能です。ここに登録した Url を、後述する redirect uri として使用します。(逆に、ここに登録していない URL は、後述する redirect uri として使用できません。)

皆さんが構築するアプリケーションが iOS や Android などの Native アプリケーションではなく、Web アプリケーションの場合、なりすまし防止のため client secret と呼ばれるアプリケーション用のパスワードが必要です。
このパスワードは、[Keys] の項目を選択して作成できます。

Office 365 API は、Exchange Online、SharePoint Online、OneDrive for Business などで使用できます。作成されたアプリケーションの [Required permissions] を選択すると、このアプリケーションがどの API のどのような処理で使用可能か設定できます。
今回は、[Office 365 Exchange Online] の [Read user mail] のみを設定しておきます。

さいごに、Office 365 契約をしている他のユーザーでも使用できるように、プロパティ画面から [Multi-tenanted] を [Yes] に設定しておきます。

ここでは、Azure AD そのものに関する細かな技術説明は省略しますが、詳細についてはAzure AD を使った API (Service) 連携の Client 開発」とその目次からリンクされる各投稿に記載しましたので参照してください。

 

Office 365 API の HTTP Flow

まず、基本の流れとして、Office 365 API を使った HTTP Flow を掲載しておきます。

Office 365 API のフローでは、まず、Web Browser (Mobile アプリの場合は、Browser Component など) を使って以下の URL にアクセスします。
resource に設定している「https://outlook.office365.com/」は、この Application が Exchange Online のリソースにアクセスすることを意味しています。

GET https://login.microsoftonline.com/common/oauth2/authorize?response_type=code&client_id={client id}&resource=https%3a%2f%2foutlook.office365.com%2f&redirect_uri={redirect uri}

Web Browser では、下図のような SignIn 画面が表示されます。AD 連携や多要素認証 (二要素認証) など、必要な処理はすべて Browser がおこなってくれます。

認証に成功すると、Browser は下記の Url にリダイレクトします。auth code には、認証結果としての Authorization code が入っています。

{redirect uri}?code={auth code}

例えば、以下のような Url になります。

https://localhost/test1?code=AwABAAAAvPM1KaPlrEqdFSB...

つぎに、上記で取得した auth code を使って、下記の POST 要求 (Request) を出します。

POST https://login.microsoftonline.com/common/oauth2/token
Content-Type: application/x-www-form-urlencoded

grant_type=authorization_code&code={auth code}&client_id={client id}&client_secret={client secret}&redirect_uri={redirect uri}

上記の結果として、下記の Json フォーマットの Response が返ってきます。access token と呼ばれるものが取得できます。

{
  "token_type": "Bearer",
  "expires_in": "3600",
  "expires_on": "1401709391",
  "resource": "https://outlook.office365.com/",
  "access_token": "eyJ0eXAiOiJKV1QiLCJhbGci...",
  "refresh_token": "AwABAAAAvPM1KaPlrEqdFSBz...",
  "scope": "Mail.Read",
  "id_token": "eyJ0eXAiOiJKV1QiLCJhbGci..."
}

取得した access_token を使って、例えば、今回は、Exchange Online のメールボックス (Inbox) からメールを取得してみましょう。
以下の通り GET 要求 (Request) を出します。

GET https://outlook.office365.com/api/v1.0/me/messages?$orderby=DateTimeSent%20desc&$top=20&$select=Subject,DateTimeReceived,From
Accept: application/json
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGci...

上記の結果として、Exchange Online の REST サービスは、以下のような Json を返します。

{
  "@odata.context": "https://outlook.office365.com/api/v1.0/$metadata#Me/Messages(Subject,DateTimeReceived,From)",
  "value": [
    {
      "@odata.id": "...",
      "@odata.editLink": "...",
      "Id": "AAMkAGQyYmJlO...",
      "Subject": "Test Mail 1",
      "DateTimeReceived": "2014-05-28T21:08:13Z",
      "From": {
        "EmailAddress": {
          "Name": "Windows Azure Team",
          "Address": "WindowsAzure@e-mail.microsoft.com"
        }
      },
    },
    {
      "@odata.id": "...",
      "@odata.editLink": "...",
      "Id": "AAMkAGQyYmJlOWJ...",
      "Subject": "Test Mail 2",
      "DateTimeReceived": "2014-05-26T07:54:42Z",
      "From": {
        "EmailAddress": {
          "Name": "Microsoft Online Services Team",
          "Address": "msonlineservicesteam@email.microsoftonline.com"
        }
      },
    },
    . . .

  ]
}

補足 : この他に、別の resource の access token を取得する場合には refresh token を使用します。OAuth を使ったこうしたフローについては、以前掲載した「Azure AD を使った API (Service) 連携の Client 開発」を参照してください。

 

API のカバー範囲

Outlook (Exchange Online)

Exchange Online にアクセスする際は、Azure Portal で、あらかじめ Permission として Exchange Online (下図) を設定し (必要な Delegated Permissions を設定します)、上述の通り、resource name として https://outlook.office365.com/ を指定します。

現在、Exchange Online の REST API を使った Mail, Calendar (Events), Contact に対する CRUD 処理と、予定 (Event) については Accept (承諾)、Decline (辞退) と 同期 (Sync) が可能でしたが、2015 年 05 月に提供された Preview 版では、Office 365 Group の処理、Mail / Events / Contacts / Groups の通知 (Notification)、フルテキスト検索なども提供され、さらに 2016/04 には、不在設定、空き時間検索 (Find Meeting Times API)、Skype API との組み合わせで Online Meeting の処理など、ユーザー フィードバックに基づき、必要な機能をつぎつぎと実装しています。(2016/04 追記)
Exchange Online の API (Outlook REST API) の利用手順の詳細については「Outlook REST API 開発 (Outlook.com 対応)」を参照してください。

なお、SOAP 時代の EWS (Exchange Web Services) も、上記の OAuth Token 認証を使った API 呼び出しが可能であり、現状 REST で足りない一部機能については、SOAP EWS のほうで補完していくことも可能です。(これについては「Exchange Online 開発 : EWS (Managed API) の OAuth Token 認証」を参照してください。)

補足 : Exchange Online の REST API、SOAP EWS 共に、ここで紹介する Token Authentication 以外に Basic Authentication もサポートしています。
今後は、可能な限り、Basic Authentication は使わないようにしてください。(Basic Auth, WS-Trust では、多要素認証、ADFS 連携などに対応していません。)

SharePoint Online

SharePoint Online にアクセスする際は、Permission として SharePoint Online (下図) を設定し、resource name は https://{tenant}.sharepoint.com を指定します。

補足 : 「Native Application で SharePoint Online に Login して REST サービスなどを呼び出すプログラミング (Authentication)」で解説したように、これまでは、モバイル アプリケーションを作成するために、SharePoint Add-in としてストアに登録する必要がありました。Office 365 API を使えば、もうこうした手続きは不要です。

Windows 8 store apps と SharePoint 2013 の連携アプリケーション開発」で解説したように、SharePoint 2013 以降の REST API は CRUD に限定されないほとんどの操作が可能です。このため、SharePoint Online では Office 365 API を使って広範なシナリオをサポートできます。

OneDrive

OneDrive for Business にアクセスする際は、Permission として SharePoint Online (上図) を設定し、resource name は https://{tenant}-my.sharepoint.com/ を指定します。(Endpoint は https://o365demo01-my.sharepoint.com/_api/{api-version} です。)

最新の OneDrive for Business API では、Large file サポート、フォルダ同期 (Synchronization) など広範なシナリオをサポートしています。

Skype for Business Online

Skype for Business Online 用の REST API である UCWA (Unified Communication Web API)、および、UCWA を使用した JavaScript の SDK である Skype Web SDK、Android や iOS の SDK である Skype App SDK が使用可能です。SDK を使用すると、ORTC などの標準技術を使った Audio 会議や Video 会議も実施できます。
詳細は「Skype Web SDK 紹介 (Skype for Business Online)」(および、この目次からリンクされている一連の投稿) を参照してください。(2016/04 変更)

OneNote

従来、Microsoft Account でのみ使用可能だった OneNote API が Office 365 にも対応しました。(2015/05/06 追記)
OneDrive for Business の Note と、SharePoint 上の Note に対して、Page の検索や作成・変更・削除、さらに Page の Preview イメージの取得 (OneNote Page Preview API) が可能です。例えば、受け取った名刺を携帯端末などで読み込んで OneNote で管理したり、管理した内容を表示するアプリケーションが構築できます。(利用者は OneNote を使って情報を直接編集することもできます。)

使用する際には、http://www.onenote.com/ に Office 365 の Account (Organization Account)で SignIn をおこないます。
15 分ほど待つと、下図の通り Permission として OneNote が設定可能になります。resource name には https://onenote.com を指定します。

Insights (Office Graph)

Delve を含む Office Graph を使うと、シグナルに基づく機械学習技術を用いて、階層化された情報利用ではなく、ネットワーク化されたさまざまな情報から迅速に必要な情報に到達できます。
Office Graph 関連の API は、SharePoint Online による GQL (Graph Query Language) を使った Graph 検索と、このあと解説する Unified API などで使用可能です。
GQL を使用した API については「Office Graph (Delve) の開発」に記載しました。

Yammer

Yammer API についても、Office 365 Sign-in との統合によって、この Office 365 API の方式が扱えるようになりました。
詳細は「yammer API の Programming」に記載しましたので参照してください。

People

People REST API を使用して、Directory (Azure AD), Contacts (Outlook) などをまたがった Unified Person View が使用できます。

Search では、スペルミスなどに対しても検索が可能で (Fuzzy matching)、Office Graph の Relevancy に準じた Rating を提供します。
Microsoft Graph (https://graph.microsoft.com/)、Outlook (https://outlook.office365.com/api/) のエンドポイントから使用可能です。

Microsoft Graph (Unified API)

例えば、「あるファイルの最終更新者の上司にメールを送る」というケースを想像してください。この場合、OneDrive for Business (SharePoint)、Office Graph、Exchange といった 3 種類の API を呼び出す必要があり、それぞれの access token が必要です。他の例として、「ユーザーが選択したファイルを読み込んで処理する」といったケースを想像してください。この場合も、「SharePoint のファイル」、「Outlook の添付ファイル」、「Yammer の添付ファイル」など、さまざまなアプリのデータを扱う必要があるでしょう。

これらの例のように、Product ごとの API だと、「この場合は SharePoint から検索」、「この場合は Exchange から検索」など、 “ソフトウェア側の都合” による区別が必要ですが、こうした課題を解決する新しい API セットとして Microsoft Graph API (旧名 Office 365 Unified API) が提供されています。
今後、Azure AD の API (Graph API) を含む Microsoft のすべての Service / Data の API は、この Microsoft Graph に集約されるでしょう。
Microsoft Graph API については「Microsoft Graph API (Office 365 Unified API) を使いこなそう」に記載しましたので参照してください。

Office 365 Audit

Office 365 Management Activity API を使用すると、Azure AD、Exchange、SharePoint の監査情報に API からアクセスできます。

上記同様、OAuth と REST による API ですが、必ず管理者のアカウントでログインする必要があります。

補足 : 今後、Outlook.com API, OneDrive API など、Consumer 版 (Office 365 Home, Solo など) のサービスでも使用できる予定で、現在、この API の Preview が提供されています。この内容は「Office 365 API の Commercial & Consumer の Unified 開発」に掲載しました。 (2015/08/25 追記)

 

Common Consent Framework と Multi-Tenant 対応

Office 365 API は Microsoft Azure Active Directory (Azure AD) の Common Consent Framework に対応しています。(というか、Office 365 API の登場にあわせて、Azure AD に実装されました。)

解説したように、この仕組みを使うと、アプリケーション利用時に Microsoft Azure Management Portal や Office 365 の管理画面を使う必要はなく、下図の Consent UI によってユーザーごとに使用開始できます。つまり、管理者による煩わしい設定は不要で、面倒なセットアップをおこなわず、どの企業テナントでもすぐにアプリを使用できます。

Office & Office 365 Development Sample」に Office 365 API を使用したサンプル アプリケーション (のリンク) を置きましたので、Office 365 アカウントをお持ちの方は、実際の Common Consent Framework の動作を確認できます。

Azure AD の Common Consent Framework の詳細については、以前投稿した「Azure Active Directory の Common Consent Framework」を参照してください。

 

Discovery Services

例えば、OneDrive for Business (MyFiles) を使用する場合、Url (REST の Endpoint) が利用者ごとに異なります。このような場合、ここで紹介する Discovery Services を使って動的に Endpoint を取得できます。

このサービス (Discovery Services) は、実は、Office 365 だけでなく Live Services (Microsoft Account) も対象で、ログインするユーザーに応じて、Office 365 の組織アカウント (Organization Account) を使った OneDrive for Business と、Microsoft Account (MSA, 旧 Windows Live ID) を使用した OneDrive の双方の Endpoint を取得可能です。
なお、今後拡張されていくと思いますが、現在 (2014/06 時点) は、MyFiles (OneDrive、または OneDrive for Business) と Exchange Online のみが対象となっています。

使い方は、Office 365 の場合、上記の Exchange Online のサンプルと同様、Client を Azure Active Directory に登録し、access token を取得し、この access token を Authorization header に設定して Discovery Services (https://api.office.com/discovery/1.0/me) を呼び出します。
なお、Resource Id として https://api.office.com/discovery/ を指定します。また、Permission には、取得したい Endpoint に応じた Permission を付与します。例えば、Exchange Online の [Read user calendars] を設定すると、Exchange Online の Endpoint のみを返します。[Enable sign-on and read user’s profile] しか指定していない場合には、Error (Access denied. You do not have permission to perform this action or access this resource) が返ります。

例えば、以下のような感じです。

GET https://api.office.com/discovery/v1.0/me/services
Accept: application/json
Authorization: Bearer eyJ0eXAiOiJKV1QiL...

上記の GET Request をおこなうと、以下のような Json フォーマットの Response が返ってきます。下記太字の通り、サービスの Endpoint の情報が返ってきます。

注意 : Preview の時 (GA の前) に Azure AD に登録した Application (Client Id) では、上記の Discovery Service は使用できないようなので注意してください。401 Unauthorized のエラー (Access denied. You do not have permission to perform this action or access this resource) が発生します。

{  
  "@odata.context":"https://api.office.com/discovery/me/v1.0/$metadata#Microsoft.DiscoveryServices.EntityContainer.ServiceInfos",
  "value":[
    {
      "@odata.type":"#Microsoft.DiscoveryServices.ServiceInfo",
      "@odata.id":"https://api.office.com/discovery/me/v1.0/services('MyFiles@O365_SHAREPOINT')",
      "@odata.editLink":"services('MyFiles@O365_SHAREPOINT')",
      "capability":"MyFiles",
      "entityKey":"MyFiles@O365_SHAREPOINT",
      "providerId":"72f988bf-86f1-41af-91ab-2d7cd011db47",
      "providerName":"Microsoft",
      "serviceAccountType":2,
      "serviceApiVersion":"v1.0",
      "serviceEndpointUri":"https://o365demo01-my.sharepoint.com/_api/v1.0/me",
      "serviceId":"O365_SHAREPOINT",
      "serviceName":"Office 365 SharePoint",
      "serviceResourceId":"https://o365demo01-my.sharepoint.com/"
    },
    {  
      "@odata.type":"#Microsoft.DiscoveryServices.ServiceInfo",
      "@odata.id":"https://api.office.com/discovery/me/v1.0/services('Contacts@O365_EXCHANGE')",
      "@odata.editLink":"services('Contacts@O365_EXCHANGE')",
      "capability":"Contacts",
      "entityKey":"Contacts@O365_EXCHANGE",
      "providerId":"72f988bf-86f1-41af-91ab-2d7cd011db47",
      "providerName":"Microsoft",
      "serviceAccountType":2,
      "serviceApiVersion":"v1.0",
      "serviceEndpointUri":"https://outlook.office365.com/api/v1.0",
      "serviceId":"O365_EXCHANGE",
      "serviceName":"Office 365 Exchange",
      "serviceResourceId":"https://outlook.office365.com/"
    },
    {  
      "@odata.type":"#Microsoft.DiscoveryServices.ServiceInfo",
      "@odata.id":"https://api.office.com/discovery/me/v1.0/services('Calendar@O365_EXCHANGE')",
      "@odata.editLink":"services('Calendar@O365_EXCHANGE')",
      "capability":"Calendar",
      "entityKey":"Calendar@O365_EXCHANGE",
      "providerId":"72f988bf-86f1-41af-91ab-2d7cd011db47",
      "providerName":"Microsoft",
      "serviceAccountType":2,
      "serviceApiVersion":"v1.0",
      "serviceEndpointUri":"https://outlook.office365.com/api/v1.0",
      "serviceId":"O365_EXCHANGE",
      "serviceName":"Office 365 Exchange",
      "serviceResourceId":"https://outlook.office365.com/"
    },
    {  
      "@odata.type":"#Microsoft.DiscoveryServices.ServiceInfo",
      "@odata.id":"https://api.office.com/discovery/me/v1.0/services('Mail@O365_EXCHANGE')",
      "@odata.editLink":"services('Mail@O365_EXCHANGE')",
      "capability":"Mail",
      "entityKey":"Mail@O365_EXCHANGE",
      "providerId":"72f988bf-86f1-41af-91ab-2d7cd011db47",
      "providerName":"Microsoft",
      "serviceAccountType":2,
      "serviceApiVersion":"v1.0",
      "serviceEndpointUri":"https://outlook.office365.com/api/v1.0",
      "serviceId":"O365_EXCHANGE",
      "serviceName":"Office 365 Exchange",
      "serviceResourceId":"https://outlook.office365.com/"
    }
  ]
}

 

Microsoft Account との併用

Microsoft Graph などを使用されている場合、Azure AD と Microsoft Account の双方に対応した Azure AD v2 endpoint が使用できます。ここで紹介する方法を使う必要はありません。(Azure AD v2 endpoint を使用した場合、id token の tid を使って、Azure AD のユーザーか Microsoft Account のユーザーか判別できます。)

上記は Office 365 (Organization Account) の場合ですが、使用している Account が Microsoft Account か Organization Account (Office 365 の Account) か識別したり、リダイレクト先の Authorization Service の URL (Live Services と Azure AD で異なります) を判定するなど、基本的な振り分けをおこなう場合には、「https://api.office.com/discovery/me/FirstSignIn」が使用できます。Office 365 Solo, Office Premium などの Microsoft Account のユーザーも対象としたサービスを構築する場合は、この URL で Account の入力を促して検査し、処理を振り分けます。(下図)

補足 : 今後、Microsoft Account (Consumer Account) と Organization Account (Commercial Account) の双方が扱える新しいエンドポイントが提供される予定です。これについては「Office 365 API の Commercial & Consumer の Unified 開発」に掲載しました。(2015/10 追記)

 

Library

ADAL

上記では Office 365 API の HTTP Flow を掲載しましたが、こうした処理を簡素化したさまざまなライブラリー (SDK) が提供されています。

まず、「Azure AD を使った API (Service) 連携の Client 開発」で解説したように、Azure Active Directory Authentication Library (ADAL) を使用すると、この認証フローを SDK レベルで数ステップで記述できます。(ADAL には、.NET 版、ストアアプリ版、iOS 版、Android 版があります。)

例えば、下記は、Windows store app で ADAL を使用したサンプル コードです。(あらかじめアプリケーションをストアに登録し、Package SID (ms-app://…) を取得して、Azure AD の Application の Redirect Uri として登録しておいてください。)

. . .
using Microsoft.IdentityModel.Clients.ActiveDirectory;
. . .

// AuthN using ADAL
AuthenticationContext ctx =
  new AuthenticationContext("https://login.microsoftonline.com/common");
AuthenticationResult auth = await ctx.AcquireTokenAsync(
  "https://outlook.office365.com/",
  "671c86df-e979-454e-8b9e-f7119a9f8b84");
var dialog = new Windows.UI.Popups.MessageDialog(
   auth.AccessToken, "Got access token !");
await dialog.ShowAsync();
. . .

 

Office 365 API Tools / Office 365 Library

このツールは、Azure AD へのセットアップの簡素化と、Office 365 API の Library (SDK) を提供します。

SDK は .NET と JavaScript に対応しており、.NET は PCL (Portable Class Library) を提供しているため、ASP.NET などはもちろん、Windows 8 store app、さらに Xamarin for iOS、Xamarin for Android にも対応しています。(ADAL と組み合わせて、プラットフォームに関係なく幅広く使用できます。)

使い方は以下の通りです。

まず、Visual Studio 2013 でプロジェクト (Windows store app などのプロジェクト) を作成して、下図の [追加] – [接続済みサービス] (Connected Services) を選択します。

Office 365 API Tools を開発環境 (Visual Studio) にインストールしている場合、表示されるサービス マネージャの画面で、下図の通り Office 365 の接続設定が可能です。
Office 365 に (管理者アカウントで) ログインし、作成するアプリケーションにあわせて、下図の通り、必要な Permission を設定します。

この設定をおこなうと、上述した Azure AD への Application 登録を裏側でおこない、プロジェクトへ必要なライブラリー (Office 365 API 関連の SDK) の参照追加をおこないます。

補足 : Microsoft.Office365.OAuth が含まれていない場合は、NuGet を使用して Microsoft Office 365 Authentication Library (Microsoft.Office365.OAuth) を追加で取得してください。

なお、ライブラリーは NuGet から個別に追加することもできます。
.NET Framework チームのブログ「The Next Generation of .NET – ASP.NET vNext」で紹介されているように、.NET 関連で以下のライブラリーがリリースされています。(開発の内容に応じて使い分けてください。)

Microsoft Office 365 Mail, Calendar and Contacts Library for .NET
Microsoft Office 365 My Files Library for .NET
Microsoft Office 365 Users and Groups Library for .NET
Microsoft Office 365 Authentication Library for .NET (Windows Store, Windows Desktop)
Microsoft Office 365 Authentication Library for ASP.NET
Microsoft Office 365 Authentication Library for .NET (Android and iOS)

あとは、Library を使ってプログラミング (コーディング) をおこなうのみです。

例えば、Microsoft Office 365 Authentication Library と Office 365 Mail Calendar and Contacts Library を組み合わせた場合は、以下のようなサンプルになります。(下記は Windows store app のサンプルです。Client Id や Redirect Uri は、App の resource や App.config から取得できます。)

. . .
using Microsoft.IdentityModel.Clients.ActiveDirectory;
using Microsoft.Office365.OAuth;
using Microsoft.Office365.OutlookServices;
. . .

private AuthenticationContext ac;
private async void Button_Click(object sender, RoutedEventArgs e)
{
  ac = new AuthenticationContext("https://login.microsoftonline.com/common");
  OutlookServicesClient cl = new OutlookServicesClient(
    new Uri("https://outlook.office365.com/api/v1.0"),
    () =>
    {
      AuthenticationResult ar = ac.AcquireToken(
        "https://outlook.office365.com",
        "69c98d4b-90d0-4985-920a-536183663e85", // Client Id
        new Uri("https://localhost/test1"));  // Redirect Uri
      return Task.Factory.StartNew(() => { return ar.AccessToken; });
    });
  var res = await (from m in cl.Me.Messages
            select new { m.Subject }).ExecuteAsync();
  ListBox1.ItemsSource = res.CurrentPage;
}
. . .

インテリセンスも使えるので、REST (Web API) を直接呼び出すよりも非常に生産性が高くなる点や、Discovery Service との連携 (上述) や、Refresh Token からの Access Token の取り直しなど、多くのシナリオが簡易なメソッド呼び出しでプログラミングできます。

なお、JavaScript 版の API は Cordova での利用を想定しているため、Cross-Domain などに対応した Web Browser 用の API ではありません。
Cordova を使用した開発方法については、説明が多くなるので、この投稿とわけて次回解説したいと思います。

 

Office 365 SDK

Android SDK などで直接使用できる Office 365 API の SDK が、Microsoft Open Technologies (以降、MS Open Tech) により Github で提供されています。Android 版 (Office 365 SDK for Android) と iOS 版 (Office 365 SDK for iOS) が提供されています。

例えば、Android 版 (Office 365 SDK for Android) のセットアップでは、ベースの開発環境として Java 7 (JSDK 1.7.0)、Android SDK をインストールしてください。(IDE は Eclipse を使用することになります。)
また、デモでもお見せしたように、Azure Active Directory Authentication Library (ADAL) for Android と一緒に使用する前提ですので、このライブラリーも Github から取得してください。

MS Open Tech が Github で提供している Open Source ですので、内容が (定期的に) そこそこアップデートされています。(順次、maven、および m2 repository を前提としたプロジェクトにアップデートされています。)
ダウンロード (git clone) したプロジェクトに記載されている ReadMe に手順が書かれていますので、最新の使い方については、この ReadMe を参考にしてください。

Office 365 SDK の API や実装手順の解説は省略します。(de:code のデモでお見せした通りです。)

 

Office 365 Store

上述の Common Consent Framework (Multi-Tenant 対応のアプリ構築) を使って、Mobile アプリ (iOS, Android 等のアプリ) から Activation させたり、Web アプリの場合にはサービス提供者のサイトで Activation させるなど可能ですが、Web の画面 (UI) を持つアプリケーションの場合は、Office 365 の Product Family (Exchange, SharePoint 等) と同じように Office 365 から Activation させることもできます。

Office 365 API を使用しているマルチテナント対応 (Consent 対応) の Application を、Seller Dashboard から登録 (申請) し、Validation に合格すると、Office 365 Store と呼ばれる場所にその Application が登録されます。
利用企業では、App Launcher から下図の [Office 365 ストア] を選択して、この Application を Consent することができ、Consent された Application は下図の「Contoso App」のように App Launcher に組み込むことができます。(このアイコンをクリックすると、Application の Web サイトに飛びます。SSO によりアイデンティティが共有されます。)

補足 : Office 365 Store に申請するには、Seller Dashboard から登録する際に [Web App using Azure AD] (下図) を選択してください。

 

現時点では、OpenID Connect, OAuth に対応した Application のみが Office 365 Store に登録可能です。

 

ということで、次回は、Office 365 API の JavaScript Library (Cordova を使用した開発) について補足したいと思います。

 

※ 変更履歴

2015/03 : エンドポイントを https://login.windows.net から https://login.microsoftonline.com (新エンドポイント) に変更しました

2015/05 : Office 365 API の新しい Preview の内容を反映

2015/11 : 「Office 365 Unified API」から「Microsoft Graph API」に名称変更。People REST API の記述を追加

2016/09 : Microsoft Graph 独自の API は「Microsoft Graph (Unified API) を使いこなそう」に移動

2017/05 : 新 Azure Portal (https://portal.azure.com/) での Azure AD 設定のリリースに伴い、新 Azure Portal を使用した設定に変更

Comments (0)

Skip to main content