我正在尝试在https://jawbone.com/up/developer/endpoints/sleeps的特定夜晚检索睡眠图,该列表包括获取用户的睡眠图。
但是,在API控制台中,只有5种Sleep Endpoint方法可用,其中没有一种方法可以获取睡眠图。我能看到的最接近的是特定睡眠事件。我们尝试更改请求网址,以便有“' / image'最后一个链接中列出的结尾,但它只包含在sleep_xid值中。
我想知道是否有办法,如果有的话。谢谢
答案 0 :(得分:0)
Jawbone图像端点违反了Apigee console strict requirements around response headers,因此该控制台无法使用这些端点。
在返回原始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...