>我找到瞭如何使用Jawbone UP API和節點在網絡上使用的示例,但是它們都非常參與其中,並且有很多活動部件以及一些過時的模塊(例如Express的較舊版本)。在本文中,我想關注絕對基礎知識 - 不必擔心將用戶數據保存到數據庫中,創建帳戶或連接社交登錄。我們將重點介紹您需要知道的核心內容,以獲取節點服務器以使用Jawbone API進行身份驗證並返回用戶數據。
該演示的所有代碼都可以在我們的github repo上提供。鑰匙要點
>使用Jawbone UP API使用Node.js訪問諸如步驟計數和睡眠習慣之類的大量用戶數據,而無需處理用戶數據存儲或帳戶管理的複雜性。
在加載的頁面上
>您將被提示輸入應用程序的詳細信息:
啟動我們的節點應用 首先,我們設置了一個基本的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>
這是這些價值的含義和/或它們來自何處的概述:
> BodyParser - 允許我們解析JSON對象。
> EJS - 分配EJS模塊為我們的模板引擎。
視圖文件夾 - 定義了我們的EJS視圖文件將在服務器上的位置(在我們的情況下, /視圖文件夾)。ejs <span>= require('ejs'),</span>>
<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>這些是我們兩個與身份驗證相關的文件的服務器上的文件位置:
>我們可以通過打開終端,導航到服務器的文件夾並運行以下命令來生成該私鑰:
這將生成一個專用服務器密鑰,準備使用稱為server.key。
<span>var express = require(‘express’), </span> app <span>= express(),</span>生成證書籤名請求(CSR)
然後,我們需要生成CSR。這通常會被發送給證書授權,但在我們的情況下,我們將自己簽署以進行測試目的。
>您將獲得一個問題列表以回答,回答這些問題,您將收到CSR作為一個名為server.csr。
的文件。使用我們的服務器私鑰
生成簽名的證書ejs <span>= require('ejs'),</span>>最後,要生成一個沒有證書授權的自簽名證書,我們運行以下命令,以生成一年有效的證書:
對於那些喜歡保持整潔和自我簽名證書的人,我們可以刪除server.csr。
https <span>= require('https'),</span>我們是https就緒
>使用我們的私鑰和證書準備並在我們的節點文件中定義,我們的服務器可以作為HTTPS運行。以下代碼使用https和我們的ssloptions啟動了服務器:
該應用程序的HTML都在.ejs文件中,因此我們可以在需要時在其中包含JavaScript變量。這些文件都在 /視圖中。 index.ejs非常簡單,只包含一個標題,說明和登錄按鈕,該按鈕將轉到 /登錄 /jawbone:
對於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頁面,帶有我們的睡眠數據表:
結論
>從這裡開始的下一步可能包括設置數據庫以存儲數據以備將來使用,為應用程序創建用戶帳戶,擴展您從UP API中獲取的數據量,更改其顯示的方式(也許添加了一些漂亮的圖!)等等。將這些數據與許多其他API結合在一起,並且某些真正整潔的應用程序的可能性很大!
節點 - jawbone-up模塊的文檔
>由於jawbone停止了服務,您可能想考慮使用Jawbone UP API的替代方法?諸如Fitbit API,Google Fit API或Apple HealthKit之類的替代方案。這些API還提供了訪問用戶的健康和健身數據的訪問權限,並提供了廣泛的文檔來幫助開發人員。
>如何從Jawbone UP API遷移到Fitbit API?
>
>在使用node.js?>
我可以使用Fitness Tracker API訪問哪些數據?訪問一系列健康和健身數據。這包括活動數據(如台階,距離和燃燒的卡路里),睡眠數據(例如睡眠時間和睡眠質量)以及進餐數據(例如食物攝入和營養信息)。可用的確切數據取決於特定的API和用戶授予的權限。以上是使用Node.js連接到Jawbone UP API的詳細內容。更多資訊請關注PHP中文網其他相關文章!