1

我正在尝试在https://jawbone.com/up/developer/endpoints/sleeps中检索特定夜晚的睡眠图,该列表包括获取用户的睡眠图。

但是,在 API 控制台中,只有 5 个 Sleep Endpoint 方法可用,其中没有一个是关于获取睡眠图的。我能看到的最接近的是特定睡眠事件。我尝试更改请求 URL,以便在前面的链接中列出的末尾有“/image”,但这只是包含在 sleep_xid 值中。

我想知道是否有办法,如果有,怎么做。谢谢

4

1 回答 1

0

Apigee控制台对 Jawbone 图像端点违反的响应标头有严格的要求,因此这些端点在该控制台中不可用。

将这些端点放在那里也没有太大价值,因为它们返回原始 PNG 数据。

相反,这里是一些使用requests_oauthlib模块的示例 Python 代码。

首先,您需要执行 OAuth 握手以获取令牌。第 1 步是去 UP authorization_url,登录到您的 UP 帐户,并授予访问权限:

>>> import requests_oauthlib
>>> up = requests_oauthlib.OAuth2Session(client_id=client_id, scope=['sleep_read'], redirect_uri=redirect_uri)
>>> up.authorization_url('https://jawbone.com/auth/oauth2/auth')[0]
u'https://jawbone.com/auth/oauth2/auth?response_type=code&client_id=-bry_vwGDwE&redirect_uri=http%3A%2F%2F127.0.0.1%3A8080%2Fauth&scope=sleep_read&state=LV2BAPq3dIz6eKu3xz420Zujb5f911

授予访问权限后,UP API 会将用户重定向回您的应用程序。第 2 步是复制您被重定向回的 URL 并使用它来获取令牌:

>>> token = up.fetch_token('https://jawbone.com/auth/oauth2/token', authorization_response=REDIRECTED_URL, client_secret=client_secret)

此时,OAuth2Session 对象up已准备好查询 API(您也可以使用此保存的令牌稍后创建另一个 OAuth2Session 对象)。

因此,让我们查询 sleeps 端点以获取sleep_xid.

>>> sleepr = up.get('https://jawbone.com/nudge/api/v.1.1/users/@me/sleeps')
>>> sleep_xid = sleepr.json()['data']['items'][0]['xid']

现在我们有了一个特定睡眠事件的 xid,您可以获取它的图形图像,API 将其作为原始 PNG 数据返回:

>>> sleepimgr = up.get('https://jawbone.com/nudge/api/v.1.1/sleeps/{}/image'.format(sleep_xid))
>>> sleepimgr.text
u'\u2030PNG\r\n...
于 2016-06-24T22:39:19.127 回答