>我找到了如何使用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中文网其他相关文章!