使用Node.js连接到Jawbone UP API
>我找到了如何使用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>
>
ejs <span>= require('ejs'),</span>
https <span>= require('https'),</span>
>
然后,我们有一个自我解释变量,该变量存储了我们将要运行的端口。fs <span>= require('fs'),</span>
。
<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>
>
>我们将访问令牌以及前面定义的客户端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>
然后,我们有一个用于循环的循环,可以通过数据中的每个项目,并格式化我们的日期和睡眠时间,然后再将它们返回我们的模板以显示。
https <span>= require('https'),</span>
>
fs <span>= require('fs'),</span>
>
然后,我们将数据返回到我们的护照的回调功能,该回调功能将呈现我们的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作为一个名为server.csr。
的文件。使用我们的服务器私钥
生成签名的证书ejs <span>= require('ejs'),</span>
该命令应该已经生成了一个server.crt文件 - 这是您的证书。
删除我们的证书请求对于那些喜欢保持整洁和自我签名证书的人,我们可以删除server.csr。
https <span>= require('https'),</span>
>使用我们的私钥和证书准备并在我们的节点文件中定义,我们的服务器可以作为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中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

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

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

JavaScript是现代Web开发的基石,它的主要功能包括事件驱动编程、动态内容生成和异步编程。1)事件驱动编程允许网页根据用户操作动态变化。2)动态内容生成使得页面内容可以根据条件调整。3)异步编程确保用户界面不被阻塞。JavaScript广泛应用于网页交互、单页面应用和服务器端开发,极大地提升了用户体验和跨平台开发的灵活性。

Python和JavaScript开发者的薪资没有绝对的高低,具体取决于技能和行业需求。1.Python在数据科学和机器学习领域可能薪资更高。2.JavaScript在前端和全栈开发中需求大,薪资也可观。3.影响因素包括经验、地理位置、公司规模和特定技能。

如何在JavaScript中将具有相同ID的数组元素合并到一个对象中?在处理数据时,我们常常会遇到需要将具有相同ID�...

学习JavaScript不难,但有挑战。1)理解基础概念如变量、数据类型、函数等。2)掌握异步编程,通过事件循环实现。3)使用DOM操作和Promise处理异步请求。4)避免常见错误,使用调试技巧。5)优化性能,遵循最佳实践。

实现视差滚动和元素动画效果的探讨本文将探讨如何实现类似资生堂官网(https://www.shiseido.co.jp/sb/wonderland/)中�...

JavaScript的最新趋势包括TypeScript的崛起、现代框架和库的流行以及WebAssembly的应用。未来前景涵盖更强大的类型系统、服务器端JavaScript的发展、人工智能和机器学习的扩展以及物联网和边缘计算的潜力。

深入探讨console.log输出差异的根源本文将分析一段代码中console.log函数输出结果的差异,并解释其背后的原因。�...
