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

Source: https://habr.com/ru/post/J220169/


All Articles