ホームページ > ウェブフロントエンド > jsチュートリアル > node.jsを使用してJawbone Up APIに接続します

node.jsを使用してJawbone Up APIに接続します

Christopher Nolan
リリース: 2025-02-20 13:16:09
オリジナル
894 人が閲覧しました

node.jsを使用してJawbone Up APIに接続します

開発者として、私は顎骨が私に持っている膨大な量のステップカウントと睡眠習慣のデータにアクセスしたいと思わずにはいられません。たくさんのデータがあります!そこで、Jawbone Up APIとノードを使用してこのデータを引き込む方法を検討し始めました。

Web全体でJawbone Up APIとノードを使用する方法の例を見つけましたが、それらはすべて非常に関与しており、いくつかの時代遅れのモジュール(Expressの古いバージョンなど)とともに多くの可動部品がありました。この記事では、ユーザーデータをデータベースに保存したり、アカウントを作成したり、ソーシャルログインを接続したりすることを心配することはありません。 Jawbone APIで認証し、ユーザーデータを返すためにノードサーバーを取得するために知っておくべきコアのことに焦点を当てます。 このデモのすべてのコードは、githubリポジトリで入手できます。

キーテイクアウト

Jawbone Up APIを利用して、ユーザーデータストレージまたはアカウント管理の複雑さなしに、node.jsを使用してステップカウントや睡眠習慣などの広範なユーザーデータにアクセスします。

Jawbone開発者サイトにJawboneアプリを設定して、API統合に不可欠なクライアントIDやアプリシークレットなどの必要な資格情報を取得することから始めます。

ユーザー認証とデータ検索を安全に処理するために、node.jsにOAuth 2.0を備えたパスポートモジュールを実装してください。
    Jawbone Up APIとのすべての通信がHTTPSを介して実施され、セキュリティプロトコルを満たし、データ傍受を避けてください。
  • node.jsでEJSテンプレートを使用して、WebアプリケーションのJawbone Up APIから取得した睡眠データを動的に表示します。
  • Jawbone Up APIからより多くのデータ型を統合し、おそらく他のAPIと組み合わせて機能を強化することにより、アプリケーションを拡張する可能性を探ります。
  • Jawboneアプリのセットアップ
  • 最初に必要なのは、Jawboneアカウントの下に設定された新しいJawboneアプリです。これは、ユーザーがデータにアクセスすることを許可するアプリです。
  • https://jawbone.com/up/developerにアクセスして、左下の「サインイン」リンクをクリックして、Jawboneサイトの開発者セクションにログインすることから始めます。既存のJawboneアカウントを使用してログインできるため、特定のJawbone開発者アカウントは必要ありません。
  • ログインしたら、https://jawbone.com/up/developer/accountにアクセスするか、「アカウント」の下の左手メニューの「アカウントの管理」リンクをクリックします。
  • このページでは、開発者アカウントページに到達します。ここから、[アプリの作成]をクリックします。
  • ロードするページに
アプリの詳細を入力するように求められます:

  • 名前 - アプリケーションの名前、「Jawbone Up Node Demo」を入力しました。
  • 説明 - これは、ユーザーのUPアプリギャラリーに表示される短い説明です。
  • 長い説明 - これは、アプリギャラリーのアプリの詳細ページに表示されます。
  • ロゴ - アプリケーション用のロゴをアップロードします。 「Select」についてのエラーを受け取った場合(私は知っていますが、それをフォローしてそのメッセージを受け取る少数の人にとっては理にかなっています)、ロゴの画像が大きすぎる可能性があります。
  • url - アプリのホームページ
  • 承認URL - ログインページが見つかるというURL。テストのために、https:// localhost:5000/login/jawboneに入力してください
  • oauth Redirect uris - ユーザーが認証されたら、アプリケーションがリダイレクトを許可されていることをurl。デモでは、https:// localhost:5000。
  • に入力します
  • クリックしてアプリケーションを作成すると、アプリのリストを使用してページに向けられます。新しく作成されたアプリは、私のものに似ている必要があります:
「クライアントID」と「アプリシークレット」に注意してください。これらは、Jawbone APIに接続するために必要なものです。

ノードアプリを起動します

node.jsを使用してJawbone Up APIに接続しますすべてのノードサーバーコードをServer.jsという1つのファイルに含めることにします。サーバーに必要なNPMモジュールを必要とすることから始めます。

最初に、基本的なExpressアプリを設定します。

その後、ejs(埋め込まれたJavaScript)が必要になります。これにより、JavaScriptをHTMLテンプレートに挿入できます。これを使用して、返されたHTML内にJavaScript変数を表示します。

Jawbone APIで認証し、アプリケーションにリダイレクトできるようにするために、JawboneはHTTPSを介してページにリダイレクトすることを要求します。これを行うには、HTTPSを含める必要があります

次に、FSを含めます。これにより、ファイルシステムを読み取ることができます。 HTTPSを有効にするために、これをサーバー証明書ファイルで読み取る必要があります。
<span>var express = require(‘express’),
</span>    app <span>= express(),</span>
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
また、JSONリクエストを処理できるようにするには、Body-Parserも必要です。

Jawbone Up APIは、認証にOAUTH 2.0プロトコルを使用します。基本的に、これは、ユーザーがJawboneアカウントでサインインし、データにアクセスする許可を与えるために、このプロトコルを実行する必要があります。幸いなことに、NPMのPassportモジュールには、これをサポートするPassport-Oauthというモジュールが含まれています。アプリにパスポートをセットアップし、OAuth 2.0のように
ejs <span>= require('ejs'),</span>
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

その後、実行するポートを保存する自己説明変数があります。

https <span>= require('https'),</span>
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
次に、Jawboneauth内のパスポートとOAuth 2.0の認証に必要なすべての値を保存します。これは、アプリを登録したときに以前に注目した「クライアントID」と「アプリの秘密」値を使用する瞬間です。
<span>var express = require(‘express’),
</span>    app <span>= express(),</span>
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

ここに、これらの値が何を意味するか、および/またはそれらがどこから来たのかの概要があります。

    ClientID - これは、Jawboneアプリにリストされている「クライアントID」です。
  • ClientSecret - これはその下の「アプリの秘密」値です。
  • AutherizationUrl - これは、ユーザーがリダイレクトされるUP OAUTH 2.0認証ページの場所です。
  • tokenurl - これは、アクセストークンを要求するために、HTTPSを呼び出す必要があるJawbone Up APIのURLです。このトークンは、Jawbone Up APIへの呼び出しに、データのリクエストを行うことが許可されていることを証明する必要があるものです。 Jawbone up APIでは、このトークンは1年間続くため、データベースに保存して、1年間ユーザーをJawboneアカウントに接続する前に、それらを再認証する必要があります。このチュートリアルでは、ユーザーなどを保存することを検討することはありませんが、これをさらにプッシュしたい場合は留意してください。
  • callbackurl - Jawboneがユーザーがデータへのアクセスを正常に提供すると、ユーザーがユーザーを誘導するURL。私たちにとっては、睡眠データを表示するページです。
  • 定義する最後の変数は、HTTPSを使用してこのサーバーを実行できるようにするためにサーバーに提供する必要があるすべての詳細を含むssloptionsです。 HTTPSをセットアップする方法を説明する際に、この記事の後半でこれらのそれぞれを詳細に説明します。
  • 次に、ノード開発者に馴染みのある基本的なノードアプリ機能を定義するいくつかの行を含めます。
  • BodyParser - JSONオブジェクトを解析することを可能にします
静的フォルダー - 画像のような静的ファイルがサーバー上の場所(この場合、 /パブリックフォルダー)を定義します。

EJS - EJSモジュールをテンプレートエンジンに割り当てます。

ビューフォルダー - ejsビューファイルがサーバー上の場所(この場合、 /viewsフォルダー)を定義します。

Express内のパスポートを初期化するために、次の行を実行します。
ejs <span>= require('ejs'),</span>
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
    メモとして、永続的なログインセッションが必要な場合は、パスポートにセットアップすることがさらにあります。この場合、セッションをセットアップする必要があります。ただし、このチュートリアルでは、Jawbone Up APIからデータを削除する初期段階に焦点を当て、ログインセッションについて心配しません。
  • Get Requests
  • のセットアップ
  • Jawbone Up APIのログイン画面にユーザーを向けるには、Jawboneログイン画面にリダイレクトするURLをサーバーに割り当てる必要があります。以下のコードは、この目的のために /login /jawboneのURLを割り当てます。このURLへの取得リクエストで、passport.authorize()に電話して、Jawbone Up Authorizationページを表示します。
    <span>var express = require(‘express’),
    </span>    app <span>= express(),</span>
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー

    上記で見ることができるように、要求している特定のアクセス許可の配列があります - ['Basic_read'、 'sleep_read']。私たちの場合、基本的なユーザーデータとスリープデータを求めています。ステップカウント、食事などへのアクセスを要求したい場合は、その配列に追加の許可リクエストを追加できます。利用可能なもののリストと、Jawbone Up Developer Authentication Documentationページでアクセスできるものを見ることができます。 また、jawboneアップ認証画面で認証に障害がある場合、ホームページにリダイレクトされます。パスポートモジュールでも成功したことを設定することができますが、Jawbone up APIで発見されましたが、このコードのさらに下のJawbonestrategyのコールバックURLを定義するため、必要ありません。

    次に、睡眠データが表示されるというGETリクエストを設定します。これは、APIにユーザーデータにアクセスできるようにリダイレクトするように指示する場所です。この例では、 /sleepdata:

    です

    ここでは、同じパスポート.authorize()関数があります。このページに到達するまでにユーザーがログインしていることを確認するためです。その場合、res.render( 'userdata'、req.account)を実行します。 Jawbone up APIがuserData.ejsテンプレートに返されたデータに渡されます(これはすぐに設定されます)。それらがログインされていない場合、それらはJawbone Up Authentication画面に向けられます。 次に、URLを設定して、ユーザーがログアウトでログアウトできるようにします。これにより、ログアウトしたらユーザーがホームページにリダイレクトされます。

    ejs <span>= require('ejs'),</span>
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    最後に、ルーティングのために、誰かがホームページにアクセスしようとする場合、index.ejsテンプレートをロードするように設定します。

    Passportを使用してJawbone up API

    に接続します

    コードの最大の部分も最も重要です。パスポート「戦略」を設定して、パスポートに「Jawbone」を使用して承認するリクエストを処理する方法を伝える方法です。このように見えます:
    https <span>= require('https'),</span>
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー

    このコードのすべてが何をしているのかを見てみましょう。
    fs <span>= require('fs'),</span>
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー

    最初に、ファイルの開始時に定義したJawboneauthオブジェクトから、clientID、ClientIDECRET、AutherizationUrl、Tokenurl、Callbackurlを設定しました。これは、new jawbonestrategy()。

    を使用して行われます

    次に、このデータを処理するコールバック関数があります。このコールバック関数でトークン値と完了した値を使用します。トークンは、APIへの呼び出しに含める必要があるJawbone Up APIアクセストークンです。完了は、データをアプリに返すコールバック関数です。

    アクセストークンと、前に定義されたクライアントIDとSecretをオプションオブジェクト内のJawbone-Upモジュールに渡します。
    <span>var express = require(‘express’),
    </span>    app <span>= express(),</span>
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー

    Jawbone-Upモジュールは、Jawbone Up APIエンドポイントにアクセスできるノードモジュールです。これらは、ユーザーデータを返すためにAPIに送信する呼び出しです(例:https://jawbone.com/nudge/api/v.1.1/users/@me/sleepsを取得します)。これらは、up.moves.get()やup.sleeps.getなどの関数です。この例では、sleeps.get()を使用して睡眠データを取得します。

    up.sleeps.get()内部には、errとbodyの2つの変数があります。 APIからデータを受信することにエラーがある場合、ERR変数で返されるため、コールバックの開始時にテストします。 それ以外の場合は、ボディ変数のJSON文字列にデータを返します。ボディ変数には、そのように見える値のJSON文字列が含まれます:

    私たちが望むものはすべてデータ内です。 json.parse(body)を使用して上記の値をJavaScriptオブジェクトに解析し、データキー内の値をJawbonedataと呼ばれる変数に割り当てます:

    ejs <span>= require('ejs'),</span>
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー

    次に、データ内の配列内の各アイテムを通過するループ用のループがあり、日付と睡眠時間をフォーマットしてから、テンプレートに戻して表示します。

    https <span>= require('https'),</span>
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    ここで、日付を読み、文字列に変換してから、1日、月、年を自分でスライスします。 20150408の値として返されるため、最初の4桁、その後2桁、その後2桁、最後の2桁を1日にスライスします。次に、DD/mm/yyyyになるように配置します。米国の日付形式でフォーマットする場合は、月と日を切り替えることができます。

    Jawbone APIは、このようなタイトルとして、比較的うまくフォーマットされた睡眠期間値を返します。これを使用できますが、「for」部分を削除します。
    fs <span>= require('fs'),</span>
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    その後、そのデータをパスポートのコールバック関数に返し、ユーザーData.ejsをレンダリングします。そのために、Jawbonedata変数をDONE関数に返します。 console.logもあります。これがログで表示されたときにログに表示されるように表示されます。

    https
    bodyParser <span>= require('body-parser'),</span>
    ログイン後にコピー
    ログイン後にコピー
    を使用します 前述したように、Jawboneのサービスではhttpsを実行する必要があるため、Jawbone Up APIを使用するには、httpsでサーバーを実行する必要があります。 CallBackurlがHTTPSに設定されていない場合、ログインしようとすると「無効なリダイレクト」エラーが表示されます。

    模範を取得するために、自己署名された証明書を使用します。ライブサイトでこれを行っている場合は、有効な証明書当局から適切な証明書を取得する必要があります。

    server.jsでは、2つのSSLオプションを定義しています:
    passport <span>= require('passport'),
    </span><span>JawboneStrategy = require('passport-oauth').<span>OAuth2Strategy</span>,</span>
    ログイン後にコピー

    これらは、2つの認証関連ファイルのサーバー上のファイルの場所です。
    • キー - これは私たちのサーバーの秘密鍵です
    • cert - これは私たちの自己署名証明書
    • です

    サーバーの秘密鍵を生成

    秘密キーを生成するには、OpenSSLツールキットを使用する必要があります。 Mac OSXとLinuxユーザーは、これをプリインストールしている必要があります。 Windowsユーザーの場合は、Cygwinをインストールし、「Packagesの選択」画面で「OpenSSL」を検索し、表示されるパッケージを選択できます。

    端末を開き、サーバーのフォルダーに移動し、次のコマンドを実行することで、その秘密キーを生成できます。

    これにより、Server.Keyと呼ばれる使用の準備ができているプラ​​イベートサーバーキーが生成されます。
    <span>var express = require(‘express’),
    </span>    app <span>= express(),</span>
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    証明書署名リクエスト(CSR)

    を生成します

    次に、CSRを生成する必要があります。これは通常、証明書当局に送られますが、私たちの場合、テスト目的で自分で署名します。 上記で作成した秘密鍵を使用してCSRを生成するには、次のコマンドを実行します。

    質問のリストが与えられ、これらに答えると、CSRがserver.csr。

    というファイルとしてCSRを受け取ります。

    サーバーの秘密鍵を使用して署名された証明書を生成します

    最後に、証明書当局なしで自己署名証明書を生成するために、次のコマンドを実行して、1年間有効な証明書を生成します。
    ejs <span>= require('ejs'),</span>
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー

    そのコマンドはserver.crtファイルを生成する必要があります - これはあなたの証明書です。

    証明書のリクエストを削除

    物事を整頓したい人が証明書を自己署名したい人のために、私たちの証明書が署名されたときにserver.csrを削除することができます。

    https ready
    https <span>= require('https'),</span>
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー

    秘密キーと証明書の準備ができており、ノードファイルで定義されているため、サーバーはHTTPSとして実行する準備ができています。次のコードは、httpsとssloptionsを使用してサーバーを起動します。

    ejsファイル

    このアプリのHTMLはすべて.EJSファイルにあるため、必要に応じてJavaScript変数を内部に含めることができます。これらのファイルはすべて /ビュー内です。 index.ejsは非常にシンプルで、[ /login /jawboneに移動するタイトル、指示、ログイン]ボタンを含む:

    userdata.ejsはアクションがある場所です。私たちが焦点を合わせることができる主なビットは私たちのテーブルです:

    EJSの新しいものについては、JavaScriptをタグ内に埋め込みました。 アイテムをuserDataテンプレートに渡します。これは、(var i = 0; i のようなforループを使用して反復します。 各日付とタイトルは、およびを使用してHTMLに挿入されます。

    アクション中のアプリ
    fs <span>= require('fs'),</span>
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー

    アプリを実行するには、端末に向かい、実行してください。

    実行中は、http:// localhost:5000にアクセスすると、最初のページが表示されます。
    bodyParser <span>= require('body-parser'),</span>
    ログイン後にコピー
    ログイン後にコピー

    ログインボタンをクリックすると、http:// localhost:5000/login/jawboneに移動します。このページでは、Jawboneのログインの詳細を促します。これらの詳細を入力した場合、または既にJawboneサイトにログインしている場合は、ユーザーデータへのアクセスを要求するAUTHページに向けられます。 「同意」をクリックします:
    node.jsを使用してJawbone Up APIに接続します

    [同意]をクリックすると、http:// localhost:5000/sleepdataページに戻る必要があります。
    node.jsを使用してJawbone Up APIに接続します

    そして、「ログアウト」ボタンをクリックすると、ログアウトしてホームページにリダイレクトする必要があります。

    結論

    Jawbone Up APIに接続し、データをノードサーバーに返すことの基本の概要を完了します。

    ここからの次の手順には、データベースを設定して将来の使用のためにデータを保存すること、アプリのユーザーアカウントの作成、UP APIから引き込むデータの量の拡大、表示方法の変更を含めることができます(おそらく追加の追加きれいなグラフ!)その他。このデータを他の任意の数のAPIと組み合わせて、いくつかの本当にきちんとしたアプリケーションの可能性は膨大です!

    その他の有用なリソース

    ノードジョーボーンアップモジュールのドキュメント

    Jawbone Developer Documentation
      パスポートのドキュメント
    • ドキュメント
    • ユーザーアカウントとmongodbを備えたアップとノードのデモ
    • jawbone up apiをnode.js
    • に接続することについてのよくある質問
    • Jawbone up APIとは何ですか、どのように機能しますか?
    ​​

    Jawbone Up APIは、開発者がJawbone Upデータと対話できるようにするJawboneが提供する一連のプログラミングインターフェイスです。これにより、ユーザーのアクティビティ、睡眠、食事、その他の健康関連データを含むJawbone Upプラットフォームからのデータの抽出が可能になります。 APIはRESTFULコールを使用し、JSONで応答がフォーマットされています。最初にJawboneの開発者サイトにアプリケーションを登録して、クライアントIDとクライアントの秘密を取得します。次に、node.jsアプリケーションで「Jawbone-up」NPMパッケージを使用できます。このパッケージは、Jawbone Up APIにリクエストを認証して作成する簡単な方法を提供します。 Fitbit API、Google Fit API、Apple HealthKitなどの代替品。これらのAPIは、ユーザーの健康とフィットネスのデータへのアクセスも提供し、開発者を支援するための広範なドキュメントがあります。

    Jawboneとそのサービスにはどうなりましたか?

    ​​

    Jawboneは、かつて人気のあるFitnessトラッカー会社であったが、そのサービスを停止し、もはやビジネスではない。同社は、Jawbone Health Hubと呼ばれる医療サブスクリプションサービスに移行しました。ただし、Jawbone Up AppとAPIはサポートされなくなりました。

    残念ながら、Jawbone Up APIを使用できますか?jawboneは操作を停止したため、Jawbone up APIはもう利用可能。このAPIを使用するアプリケーションは、予想どおりに機能しなくなります。健康とフィットネスのデータにアクセスするために代替APIに切り替えることをお勧めします。

    Jawbone Up APIからFitbit APIに移行するにはどうすればよいですか? 。まず、Fitbitの開発者サイトにアプリケーションを登録する必要があります。次に、Fitbit APIを使用して、ユーザーの健康とフィットネスデータにアクセスできます。 Fitbit APIは、アクティビティ、睡眠、食事のデータへのアクセスを含むJawbone Up APIと同様の機能を提供します。 node.jsは、ChromeのV8 JavaScriptエンジンに基づいて構築されたJavaScriptランタイムです。スケーラブルなネットワークアプリケーションの構築に使用されます。 node.jsは非ブロッキングであるため、効率的で軽量で、データ集約型のリアルタイムアプリケーションに最適です。 APIの効率と使いやすさのために、APIとの接続に一般的に使用されます。

    node.js?

以上がnode.jsを使用してJawbone Up APIに接続しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート