OneNote Services APIをモバイルアプリケーションに統合する

最近、マイクロソフトは開発者向けに新しいOneNote Services APIを導入しました。これにより、ユーザーのノートブックにアプリケーションから直接ノートを作成できます。 現在、APIは、テキスト、html、URL、画像で構成されるレコードの作成と、URLによるWebページのスナップショットの作成(Bingを使用)をサポートしています。 News360は、マイクロソフトのパートナーとして、APIをすべてのモバイルアプリケーション(iOS、Android、WinPhone、およびWindows 8)に統合した最初の企業の1つです。 統合は簡単です-マイクロソフトは、iOS、Android、およびWindows向けのライブSDK、およびWebおよびモバイルアプリケーション向けのREST APIを提供します。



Live SDKを使用すると、すぐに使用できる認証が提供され、記録プロセス全体が大幅に簡素化されるため、OneNoteを最小限のコストで統合できます。 ただし、News360には外部APIを操作するための独自のサブシステムがあり、APIと対話するときのモデルとプレゼンテーションの分離(承認、共有など)に基づいているため、RESTを介して統合が行われました。 しかし、まず最初に。



アプリケーション登録


OneNote Services APIを統合するには、最初に行うことは、 ここで Live Connectを介してアプリケーションを登録することです。

登録後、ClientIDとSecretを取得します。 APIをモバイルアプリケーションに統合する場合は、API設定セクションで「モバイルまたはデスクトップクライアントアプリ」設定を必ず有効にする必要があります。



モバイルアプリケーションでの承認


ユーザーがOneNoteでエントリを作成できるようにするには、Live IDでログインする必要があります。

Live SDKを使用すると、統合が大幅に簡素化されます。 エントリを作成できるClientIDとスコープが必要になります。 マイクロソフトでは、「wl.signin office.onenote_create」の使用を推奨しています。 Live SDKは、認証に必要なUI全体を提供し、受信した資格情報のストレージも提供します。

RESTを介した承認のために、Microsoftは標準のOAuth2承認コードフローを提供します。

認証コードを取得するには、次のWebViewにアクセスする必要があります。



GET https://login.live.com/oauth20_authorize.srf?client_id=<your_client_id>&scope=<your_scopes>&response_type=code&redirect_uri=https://login.live.com/oauth20_desktop.srf&display=touch
      
      





スコープパラメーターは「wl.signin%20office.onenote_create」である必要があります。 存続期間の長いトークンとリフレッシュトークンメカニズムを使用する場合は、スコープ「wl.offline_access」もリクエストする必要があります。アクセストークンと一緒に、再認証なしでアクセストークンを更新するために使用できるリフレッシュトークンを受け取ります。 この場合、結果のスコープは「wl.signin%20wl.offline_access%20office.onenote_create」になります。

モバイルアプリケーションのパラメーターredirect_uriは、「https://login.live.com/oauth20_desktop.srf」と等しくなければなりません。

display = touchパラメーターは、モバイルデバイス用に最適化された認証Webページを提供します。



承認に成功すると、WebViewは次のリンクをたどります。



 https://login.live.com/oauth20_desktop.srf?code=<your_authorization_code>
      
      





この移行は処理され、認証コードから取得する必要があります。

その後、WebViewを非表示にして、便利な方法でリクエストを実行できます。



 POST https://login.live.com/oauth20_token.srf “client_id=<your_clint_id>&client_secret=<your_secret>&redirect_uri=https://login.live.com/oauth20_desktop.srf&code=<your_authorization_code>&grant_type=authorization_code”
      
      





すべてが正しく行われた場合、このリクエストに応じて、アクセストークンと有効期限が設定されたjsonと、スコープでwl.offline_accessを指定した場合の更新トークンを受け取ります。



 { "access_token" : "<your_access_token>", "expires_in" : <expires_in_seconds>, "refresh_token" : "<your_refresh_token>" }
      
      





これで、アクセストークンを使用してレコードを作成できます。



アクセストークンの更新


アクセストークンの有効期間は30分であり、長期間使用するために更新する必要があります。 アクセストークンを更新するには、リクエストを完了する必要があります



 POST https://login.live.com/oauth20_token.srf “client_id=<your_clint_id>&client_secret=<your_secret>&redirect_uri=https://login.live.com/oauth20_desktop.srf&refresh_token=<your_refresh_token>&grant_type=refresh_token”
      
      





回答は、初期アクセストークンと同様に処理する必要があります。



OneNoteでメモを作成する


認証に成功したら、OneNoteでエントリを作成できます。 現時点では、APIはメモ帳の選択をサポートしておらず、「クイックメモ」と呼ばれるメモ帳にすべてのエントリを作成します。

レコードの作成は非常に簡単です。 News360のように、テキストと画像を含む単純なエントリを作成する場合は、フォームの単純なhtmlテンプレートを指定する必要があります。



 <html> <head> <title>Story title</title> <meta name=\"created\" content=\"<ISO8601_date_string>\" />" </head> <body> <your_story_text/html> </body> </html>
      
      





htmlを本文に渡すこともできます。これは、とりわけimgタグをサポートします。



テンプレートに記入した後、リクエストを完了する必要があります。



 POST https://www.onenote.com/api/v1.0/pages Content-Type : text/html Authorization : Bearer <your_access_token> "your_html_template_with_data"
      
      





すべてが正しく行われると、jsonは作成されたレコードへのリンクを返します。



 201 Created "{ "links" : { "oneNoteClientUrl" : {"href" : "onenote:https://..."}, "oneNoteWebUrl" : {"href" : "https://..."} } }"
      
      





これらのリンクはディープリンクに使用でき、ユーザーエクスペリエンスを補完できます。デバイスにインストールされている場合、クライアントURLを使用してOneNoteクライアントに移動でき、Web URLを使用してWebバージョンに移動できます。



したがって、認証にREST APIを使用している場合でも、OneNoteサービスAPIの統合に問題はありません。 この記事が誰かに役立つことを願っています。



関連リンク:

Microsoft Officeブログ-News360およびOneNote



All Articles