>我找到瞭如何使用Jawbone UP API和節點在網絡上使用的示例,但是它們都非常參與其中,並且有很多活動部件以及一些過時的模塊(例如Express的較舊版本)。在本文中,我想關注絕對基礎知識 - 不必擔心將用戶數據保存到數據庫中,創建帳戶或連接社交登錄。我們將重點介紹您需要知道的核心內容,以獲取節點服務器以使用Jawbone API進行身份驗證並返回用戶數據。
該演示的所有代碼都可以在我們的github repo上提供。鑰匙要點
>使用Jawbone UP API使用Node.js訪問諸如步驟計數和睡眠習慣之類的大量用戶數據,而無需處理用戶數據存儲或帳戶管理的複雜性。
首先在Jawbone開發人員網站上設置Jawbone應用程序,以獲取必要的憑據,例如客戶ID和App Secret,這對於API集成至關重要。
>用Node.js中的OAuth 2.0實現護照模塊,以安全地處理用戶身份驗證和數據檢索。- 確保通過HTTPS進行與Jawbone UP API進行的所有通信以滿足安全協議並避免數據截距。
- >使用Node.js中的EJS模板從Web應用程序上的Jawbone UP API中動態顯示已檢索的睡眠數據。
- >探索通過從Jawbone UP API集成更多數據類型的更多數據類型,並可能與其他API結合以增強功能。
- >設置Jawbone應用
- >我們需要的第一件事是在我們的Jawbone帳戶下設置的新Jawbone應用程序。這是用戶將授權訪問其數據的應用程序。 >
- 首先登錄Jawbone站點的開發人員部分,然後訪問https://jawbone.com/up/developer,然後單擊左下方的“登錄”鏈接。您將不需要特定的Jawbone開發人員帳戶,因為它們可以允許您使用現有的Jawbone帳戶登錄。
- >登錄後,請訪問https://jawbone.com/up/developer/account,或單擊“帳戶”下左手菜單中的“管理帳戶”鏈接。
>在此頁面上,您將聯繫您的開發人員帳戶頁面。從這裡,單擊“創建應用”。
在加載的頁面上
>您將被提示輸入應用程序的詳細信息:
啟動我們的節點應用 首先,我們設置了一個基本的Express App。
>我將在一個名為server.js的文件中包含所有我們的節點服務器代碼。我們首先需要服務器的必要NPM模塊。
>
<span>var express = require(‘express’), </span> app <span>= express(),</span>接下來,我們包括FS,它允許我們讀取文件系統。我們需要在服務器證書文件中讀取以啟用HTTPS。
>
ejs <span>= require('ejs'),</span>>我們還需要身體偏好器才能使我們能夠處理JSON請求:
https <span>= require('https'),</span>jawbone UP API使用OAuth 2.0協議進行身份驗證。基本上,這意味著要通過用戶登錄其Jawbone帳戶並允許我們訪問其數據,我們需要仔細研究此協議。幸運的是,NPM的護照模塊包含一個稱為Passport-Oauth的模塊,該模塊支持這一點。我們將Passport與Oauth 2.0一起在應用程序中設置好:
>
然後,我們有一個自我解釋變量,該變量存儲了我們將要運行的端口。fs <span>= require('fs'),</span>接下來,我們將在Passport和JawboneAuth中存儲身份驗證所需的所有值。這是您在註冊應用時提前註意的“客戶端ID”和“ App Secret”值的時刻。
。
<span>var express = require(‘express’), </span> app <span>= express(),</span>
這是這些價值的含義和/或它們來自何處的概述:
- clientId - 這是您的Jawbone應用程序列出的“客戶端ID”。
- 客戶端 - 這是下面的“應用程序秘密”值。
>> 授權庫 - 這是UP OAuth 2.0身份驗證頁面的位置,將用戶重定向到。
- Tokenurl - 這是Jawbone UP API中的URL,我們必須調用HTTPS,以請求訪問令牌。這個令牌是我們需要將其包含在給Jawbone UP API的電話中,以證明我們有權提出這些數據請求。在Jawbone UP API中,此令牌可以持續一年,因此您可以將其存儲在數據庫中,並將用戶連接到其Jawbone帳戶一年,然後才需要重新驗證它們。我們不會在本教程中考慮存儲用戶,但是如果您想進一步推動它,請記住。 >。
- > callbackurl - Jawbone在我們網站上的URL將用戶成功地將用戶帶回他們成功地訪問其數據後。對我們來說,這是顯示睡眠數據的頁面。
- >我們要定義的最後一個變量是我們的ssloptions,其中包含我們需要提供給服務器的所有詳細信息,以便我們使用HTTPS運行此服務器。在解釋我們如何設置https時,我將在本文稍後詳細介紹所有這些。
- >
然後,我們包含一些定義一些基本節點應用功能的行,這些app功能將為節點開發人員熟悉:
> BodyParser - 允許我們解析JSON對象。
> EJS - 分配EJS模塊為我們的模板引擎。
視圖文件夾 - 定義了我們的EJS視圖文件將在服務器上的位置(在我們的情況下, /視圖文件夾)。ejs <span>= require('ejs'),</span>>
- 為了在Express中初始化Passport,我們運行以下行:
>
注意,如果我們想持續登錄會話,請在護照中設置更多。在這種情況下,我們需要設置會議。但是,對於本教程,我們將重點關注從Jawbone UP API獲取數據的初始階段,而不必擔心登錄會話。 - > 設置我們的獲取請求
- 為了將用戶引導到jawbone UP API的登錄屏幕,我們需要在服務器上分配一個URL,該URL將重定向到Jawbone登錄屏幕。為此,下面的代碼分配了 /登錄 /jawbone的URL。在獲得此URL的請求時,我們致電Passport.Authorize()啟動我們的Jawbone UP UP授權頁面:
<span>var express = require(‘express’), </span> app <span>= express(),</span>
>如上所述,我們有一系列我們要求的特定權限 - [basic_read','sleep_read']。在我們的情況下,我們要求提供基本的用戶數據和睡眠數據。如果您想要求訪問步驟數,用餐等等,則可以向該陣列添加其他許可請求。您可以在Jawbone UP開發人員身份驗證文檔頁面上查看可用的內容及其提供的訪問。
>另外,如果在Jawbone UP身份驗證屏幕中進行身份驗證失敗,它將將我們重定向回主頁。在護照模塊中也可能設置Scunstallect,但是我發現了Jawbone UP API,不需要,因為我們將在此代碼中進一步定義JawboneStrategy中的回調URL。 然後,我們設置了我們的睡眠數據將出現的Get請求。這是我們將告訴API將我們重定向到訪問用戶數據的位置。在此示例中,它是 /sleepdata:>
>我們在此處具有相同的Passport.authorize()函數,只是為了檢查用戶到達此頁面時是否已登錄。如果是這樣,我們運行res.render('userData',req.account);它傳遞了jawbone UP API返回userData.ejs模板的數據(我們將盡快設置)。如果未登錄,它們將被指向jawbone UP身份驗證屏幕。
然後,我們設置一個URL以允許用戶在 /註銷處註銷,該網站將用戶重定向到主頁一旦登錄:ejs <span>= require('ejs'),</span>
>最後,對於我們的路由,如果有人試圖訪問主頁,我們將其設置為加載index.ejs模板:
使用護照連接到jawbone up api
https <span>= require('https'),</span>
>最大的代碼部分也是最重要的 - 建立護照“策略”來告訴Passport如何處理請求以授權使用'Jawbone'。看起來像這樣:
fs <span>= require('fs'),</span>
>讓我們介紹所有這些代碼正在做的事情。
>首先,我們從我們在文件開頭定義的JawboneAuth對象設置了我們的clientID,clientsecret,授權庫,tokenurl和callbackurl。這是使用新的JawboneStrategy()。
bodyParser <span>= require('body-parser'),</span>接下來,我們將擁有處理此數據的回調函數。我們在此回調函數中使用令牌和完成值。令牌是Jawbone UP API訪問令牌,我們需要將其與API的任何呼叫一起包括在內,以證明我們已對其進行了身份驗證。完成的是將我們的數據返回到應用程序的回調函數。
>
>我們將訪問令牌以及前面定義的客戶端ID和秘密傳遞到選項對像中的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()之類的函數中。在我們的示例中,我們將使用up.sleeps.get()獲取睡眠數據。
> 在UP.Sleeps.get()中,我們有兩個變量,分別是錯誤和身體。如果從API接收數據時存在錯誤,則將其返回在ERR變量中,因此我們在回調開始時對此進行測試。>
>否則,我們將數據返回到身體變量中的JSON字符串中。車身變量將包含一個看起來像這樣的值的json字符串:>
ejs <span>= require('ejs'),</span>我們想要的一切都在數據中。 我們使用json.parse(body)將上面的值解析到JavaScript對像中,並將數據鍵中的值分配給一個稱為JawboneData的變量:
然後,我們有一個用於循環的循環,可以通過數據中的每個項目,並格式化我們的日期和睡眠時間,然後再將它們返回我們的模板以顯示。
https <span>= require('https'),</span>在這裡,我們在日期中閱讀,將其轉換為字符串,然後將我們自己分開。它作為20150408的價值返回,因此我們將前四位數字歸為一年,在那個月之後的兩個數字,而最後兩個人則是一天。然後,我們安排它,以便它將是DD/mm/yyyy,如果您希望以美國日期格式格式化,則可以切換一個月:
>
fs <span>= require('fs'),</span>jawbone api返回一個相對良好格式的睡眠持續時間值,就像這樣的標題:“對於9h 43m”。我們可以使用它,但要刪除“ for”部分,例如:
>
然後,我們將數據返回到我們的護照的回調功能,該回調功能將呈現我們的userData.ejs。為此,我們將JawboneData變量返回到完成的功能。還有一個控制台。 log只是為了顯示顯示jawbone up數據以顯示以下顯示:bodyParser <span>= require('body-parser'),</span>
使用https
正如我之前提到的,為了使用Jawbone UP API,我們需要使用HTTPS運行服務器,因為Jawbone的服務要求雙方運行HTTPS。如果未設置為https的callbackurl,當您嘗試登錄時,您將收到“無效的重定向”錯誤。passport <span>= require('passport'), </span><span>JawboneStrategy = require('passport-oauth').<span>OAuth2Strategy</span>,</span>為了使我們的示例工作,我們將使用自簽名的證書。如果您在實時網站上進行此操作,則需要從有效的證書授權書中獲得適當的證書。
>在server.js中,我們定義了兩個SSL選項:
port <span>= 5000,</span>這些是我們兩個與身份驗證相關的文件的服務器上的文件位置:
- 鍵 - 這是我們服務器的私鑰 >
- 證書 - 這是我們的自我簽名證書 >
>為我們的服務器生成一個私鑰
為了生成一個私鑰,我們需要使用OpenSSL工具包。 MAC OSX和Linux用戶應該已預裝。對於Windows用戶,您可以安裝Cygwin,在“選擇軟件包”屏幕上搜索“ OpenSSL”,然後選擇出現的軟件包。>我們可以通過打開終端,導航到服務器的文件夾並運行以下命令來生成該私鑰:
這將生成一個專用服務器密鑰,準備使用稱為server.key。
<span>var express = require(‘express’), </span> app <span>= express(),</span>生成證書籤名請求(CSR)
然後,我們需要生成CSR。這通常會被發送給證書授權,但在我們的情況下,我們將自己簽署以進行測試目的。
>要使用上面創建的私鑰生成CSR,請運行以下命令:>
>您將獲得一個問題列表以回答,回答這些問題,您將收到CSR作為一個名為server.csr。
的文件。使用我們的服務器私鑰
生成簽名的證書ejs <span>= require('ejs'),</span>>最後,要生成一個沒有證書授權的自簽名證書,我們運行以下命令,以生成一年有效的證書:
該命令應該已經生成了一個server.crt文件 - 這是您的證書。
刪除我們的證書請求對於那些喜歡保持整潔和自我簽名證書的人,我們可以刪除server.csr。
https <span>= require('https'),</span>我們是https就緒
>使用我們的私鑰和證書準備並在我們的節點文件中定義,我們的服務器可以作為HTTPS運行。以下代碼使用https和我們的ssloptions啟動了服務器:
我們的EJS文件
該應用程序的HTML都在.ejs文件中,因此我們可以在需要時在其中包含JavaScript變量。這些文件都在 /視圖中。 index.ejs非常簡單,只包含一個標題,說明和登錄按鈕,該按鈕將轉到 /登錄 /jawbone:
> userdata.ejs是操作所在的地方。我們可以關注的主要位置是我們的桌子:
對於EJ的新手,我們將JavaScript嵌入標籤中。 我們將項目傳遞給UserData模板,我們通過使用for for so to to s o:。 然後,使用和將每個日期和標題插入我們的HTML。
fs <span>= require('fs'),</span>我們的應用程序在行動
>要運行應用程序,前往您的終端並運行:
>運行它,請訪問http:// localhost:5000,您會看到我們的初始頁面:
bodyParser <span>= require('body-parser'),</span>
如果我們單擊“登錄”按鈕,我們將被帶到http:// localhost:5000/login/jawbone,這將引導我們進入Jawbone UP Authentication Page。該頁面將提示我們獲取Jawbone登錄詳細信息。輸入這些詳細信息後,或者您已經登錄了Jawbone站點,您將被指示到驗證頁面,要求訪問用戶數據。單擊“同意”:
當我們單擊同意時,我們應該將其定向到http:// localhost:5000/sleepdata頁面,帶有我們的睡眠數據表:
結論
>完成了我們連接到Jawbone UP API並將數據返回到節點服務器的基礎的概述。
>從這裡開始的下一步可能包括設置數據庫以存儲數據以備將來使用,為應用程序創建用戶帳戶,擴展您從UP API中獲取的數據量,更改其顯示的方式(也許添加了一些漂亮的圖!)等等。將這些數據與許多其他API結合在一起,並且某些真正整潔的應用程序的可能性很大!
節點 - jawbone-up模塊的文檔
jawbone開發人員文檔
-
PASSPORT的文檔
- 帶有用戶帳戶和mongodb
- 的UP和節點演示
- 經常詢問有關將jawbone UP API與node.js
>什麼是Jawbone UP API,它是如何工作的? - > jawbone UP API是Jawbone提供的一組編程接口,允許開發人員與Jawbone up數據進行交互。它可以從Jawbone UP平台中提取數據,其中包括用戶的活動,睡眠,餐和其他與健康相關的數據。 API使用RESTFUL的呼叫和響應在JSON中格式化。
>如何將Jawbone UP API連接到Node.js?
將JAWBONE UP API與Node.js連接,您需要首先在Jawbone的開發人員網站上註冊您的申請,以獲取客戶ID和客戶端的秘密。然後,您可以在node.js應用程序中使用“ jawbone-up” npm軟件包。該軟件包提供了一種簡單的方法來驗證和向jawbone up api提出請求。
>由於jawbone停止了服務,您可能想考慮使用Jawbone UP API的替代方法?諸如Fitbit API,Google Fit API或Apple HealthKit之類的替代方案。這些API還提供了訪問用戶的健康和健身數據的訪問權限,並提供了廣泛的文檔來幫助開發人員。
> Jawbone及其服務發生了什麼?該公司已過渡到稱為Jawbone Health Hub的醫療訂閱服務。但是,不再支持Jawbone UP應用程序和API。可用的。使用此API的任何應用都將不再按預期運行。建議切換到替代API以訪問健康和健身數據。
>>如何從Jawbone UP API遷移到Fitbit API?
>
什麼是node.js,為什麼它用於與APIS連接? Node.js是基於Chrome的V8 JavaScript引擎的JavaScript運行時。它用於構建可擴展網絡應用程序。 Node.js是非阻滯,它使其高效且輕巧,非常適合數據密集型實時應用程序。由於其效率和易用性,通常用於與API連接。>
>在使用node.js?>
我可以使用Fitness Tracker API訪問哪些數據?訪問一系列健康和健身數據。這包括活動數據(如台階,距離和燃燒的卡路里),睡眠數據(例如睡眠時間和睡眠質量)以及進餐數據(例如食物攝入和營養信息)。可用的確切數據取決於特定的API和用戶授予的權限。>
>在使用健身跟踪器API時如何確保用戶數據的隱私和安全性? API,重要的是要遵循數據隱私和安全性的最佳實踐。這包括在訪問數據之前,使用安全連接(HTTP)在所有請求中獲得用戶同意,安全地存儲用戶數據,並僅請求您的應用程序所需的最小數據。以上是使用Node.js連接到Jawbone UP API的詳細內容。更多資訊請關注PHP中文網其他相關文章!

JavaScript核心數據類型在瀏覽器和Node.js中一致,但處理方式和額外類型有所不同。 1)全局對像在瀏覽器中為window,在Node.js中為global。 2)Node.js獨有Buffer對象,用於處理二進制數據。 3)性能和時間處理在兩者間也有差異,需根據環境調整代碼。

JavaScriptusestwotypesofcomments:single-line(//)andmulti-line(//).1)Use//forquicknotesorsingle-lineexplanations.2)Use//forlongerexplanationsorcommentingoutblocksofcode.Commentsshouldexplainthe'why',notthe'what',andbeplacedabovetherelevantcodeforclari

Python和JavaScript的主要區別在於類型系統和應用場景。 1.Python使用動態類型,適合科學計算和數據分析。 2.JavaScript採用弱類型,廣泛用於前端和全棧開發。兩者在異步編程和性能優化上各有優勢,選擇時應根據項目需求決定。

選擇Python還是JavaScript取決於項目類型:1)數據科學和自動化任務選擇Python;2)前端和全棧開發選擇JavaScript。 Python因其在數據處理和自動化方面的強大庫而備受青睞,而JavaScript則因其在網頁交互和全棧開發中的優勢而不可或缺。

Python和JavaScript各有優勢,選擇取決於項目需求和個人偏好。 1.Python易學,語法簡潔,適用於數據科學和後端開發,但執行速度較慢。 2.JavaScript在前端開發中無處不在,異步編程能力強,Node.js使其適用於全棧開發,但語法可能複雜且易出錯。

javascriptisnotbuiltoncorc; sanInterpretedlanguagethatrunsonenginesoftenwritteninc.1)JavascriptwasdesignedAsignedAsalightWeight,drackendedlanguageforwebbrowsers.2)Enginesevolvedfromsimpleterterpretpretpretpretpreterterpretpretpretpretpretpretpretpretpretcompilerers,典型地,替代品。

JavaScript可用於前端和後端開發。前端通過DOM操作增強用戶體驗,後端通過Node.js處理服務器任務。 1.前端示例:改變網頁文本內容。 2.後端示例:創建Node.js服務器。

選擇Python還是JavaScript應基於職業發展、學習曲線和生態系統:1)職業發展:Python適合數據科學和後端開發,JavaScript適合前端和全棧開發。 2)學習曲線:Python語法簡潔,適合初學者;JavaScript語法靈活。 3)生態系統:Python有豐富的科學計算庫,JavaScript有強大的前端框架。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

MinGW - Minimalist GNU for Windows
這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

SublimeText3漢化版
中文版,非常好用

DVWA
Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

禪工作室 13.0.1
強大的PHP整合開發環境

PhpStorm Mac 版本
最新(2018.2.1 )專業的PHP整合開發工具