获取Jawbone UP中的个人数据(二)非官方API , part 1

来源:互联网 发布:单片机窗帘控制系统 编辑:程序博客网 时间:2024/05/01 21:35

1. 概述和登陆

从Jawbone网站上,能够下载UP的个人数据,但是这个数据是以天为单位的汇总数据,如果我们需要更精细的数据,就必须通过程序获取。

Jawbone官方网站宣称已经提供开发API,用于与合作方应用之间进行数据交换。但是这个API在网上见不到。我辈苦逼的码农想玩玩自己的数据,只好另想办法。

Eric Blue曾经于2011年11月发表过一篇博文jawbone-up-api-discovery,介绍了他通过网络侦听Jawbone UP应用与服务器之间的通讯,破解出的一些非官方API,这些API可以用于获得用户自己的运动数据。时过境迁,Jawbone UP硬件已经更新换代至UP 2,手环版本为6-1.0.20,手机应用软件也已经升级到了2.6.8版本,Server端版本已经更新至1.34。Eric Blue公布的API部分内容已经过时。

下面的API是对Jawbone UP的Android版本进行了反编译所得到的,并借鉴了Eric Blue的方法,通过对Jawbone UP应用发出的请求进行侦听以确认,错误在所难免。这些API包括:

  • 两种login方法
  • UP进入后首屏信息显示所使用的:user score 和 social feeds
  • 获取不同类型的用户时间:
  • 详细记录:包括move, sleep, workout、mood、meal
  • 统计结果数据
  • 用户Profile
  • 朋友列表

各位玩的开心!

客户端请求基本说明

典型的 Jawbone UP 客户端请求形式如下,其中形如 v.1.34 的版本部分用于指明所需的Server端服务版本号,此信息可以省略:

https://jawbone.com/nudge/api/...https://jawbone.com/nudge/api/v.1.34/...

在进行其他访问之前,必须先登录。正确登录之后,只需在每次请求的HTTP中,将认证时的所获得Token值设置到 HTTP Header:**x-nudge-token** 里,即可保持会话。

x-nudge-token : 1BkkscbY2RvUUQXF9TewzzDEEuGrKl7nJIuimAfcp8E

用户登录

Eric Blue 提到的登录方式 "**user/signin/login**" 方法仍然可用。不过在新的UP客户端版本中,还能够通过 “**users/login**” API进行登陆。

利用 user/signin/login 登陆

Request:

POST    https://jawbone.com/nudge/api/user/signin/login

Params:

'email': email, 'pwd':  password, 'service': 'nudge'

Return :

Token 值为 JSON 内容中最下端的 "token" : "un_ZHV8Uiq1pyJCPnqCljjDEEuGrKl7nURWQYUScC6E"

用户 XID 值取 "user"."xid” : "RGaCBFg9CsDYVvm2kchbcw"

完整JSON示例如下:

{    "newly": false,     "user": {        "last_name": "VisHealth",         "uid": 37291881,         "image": "user/image/i/51b4916b03eb185d1c1948a5_RGaCBFg9CsDYVvm2kchbcw_137078820345_2781804_photo.jpeg",         "time_removed": 0,         "basic_info": {            "weight": 56.2,             "dob": "1976-06-09",             "gender": "female",             "metric": 1,             "height": 1.58,             "locale": "zh-cn"        },         "share_move": true,         "birth_day": "09",         "text_1": "",         "first_name": "Tester",         "xid": "RGaCBFg9CsDYVvm2kchbcw",         "smart_alarm": {            "stopTimeMinsPastMidnight": 390,             "dayMask": 62,             "enable": true,             "startTimeMinsPastMidnight": 370        },         "apps": [            {                "xid": "bVvQvURXOKc",                 "share": true            },             {                "xid": "__3Ao7ntG68",                 "share": true            }        ],         "share_eat": false,         "birth_month": "06",         "type": 0,         "email": "iasc@163.com",         "birth_year": "1976",         "band_name": "iasc's jawbone up",         "up_goals": {            "move": {                "steps": 10000,                 "workout_time": null            },             "sleep": {                "total": 27000,                 "bedtime": null,                 "deep": null            },             "meals": {                "carbs": null,                 "fiber": null,                 "sodium": null,                 "sugar": null,                 "calcium": null,                 "unsat_fat": null,                 "cholesterol": null,                 "protein": null,                 "sat_fat": null            }        },         "first": "Tester",         "share_mood": true,         "primary_address": {            "city": "",             "xid": "P9Q5vjiI-M0",             "country": "CN",             "zipcode": "",             "state": "",             "street_1": "",             "street_2": ""        },         "share_sleep": false,         "power_nap": {            "use_optimal_duration": 0,             "custom_duration": 2400,             "maximum_duration": 3600        },         "active_alert": {            "stopTimeMinsPastMidnight": 1020,             "threshold": 0,             "durationMins": 60,             "type": 1,             "startTimeMinsPastMidnight": 480        },         "last": "VisHealth",         "name": "Tester VisHealth",         "gender": "female",         "profile_privacy": "friends",         "data_2": 0,         "data_1": 0,         "flags": 1,         "time_created": 1370439133,         "mail_opts": {            "mail_opt_in_new_products": null,             "mail_opt_in": null,             "mail_opt_in_products_owned_updates": null,             "mail_opt_in_customer_surveys": null,             "mail_opt_in_deals_n_promotions": null        },         "goals": {            "move": 3500,             "sleep": 21600,             "eat": 2        }    },     "token": "un_ZHV8Uiq1pyJCPnqCljjDEEuGrKl7nURWQYUScC6E",     "rc": 0}   

利用 users/login 登陆

users/login 是目前Jawbone UP客户端采用的登录方式,由于其将用户密码进行 SHA-1 之后再传递,所以更加安全。

登陆页面

Request:

POSThttps://jawbone.com/nudge/api/users/login

Params:

'email' : email,'hash_pwd' : hash #将 password 进行 SHA-1 之后,再转换成 HEX 格式

Return :

Token 值为 JSON 内容中的 "data"."session_uid" : "1BkkscbY2RvUUQXF9TewzzDEEuGrKl7nJIuimAfcp8E"

用户 XID 值为 "data"."user"."xid" : "RGaCBFg9CsDYVvm2kchbcw"

完整JSON示例如下:

{    "meta": {        "message": "OK",         "code": 200,         "time": 1371960908    },     "data": {        "session_uid": "1BkkscbY2RvUUQXF9TewzzDEEuGrKl7nJIuimAfcp8E",         "config": {            "i18n": null,             "configuration": {                "twitter_character_count": 24,                 "system_message": ""            },             "features": {                "up_food_gallery": [                    "off",                     null                ],                 "up_twitter_share": [                    "on",                     null                ],                 "up_fooditem_search_typeahead": [                    "on",                     null                ],                 "up_app_gallery": [                    "off",                     null                ],                 "up_addressbook_import": [                    "on",                     null                ],                 "up_daily_dashboards": [                    "off",                     null                ],                 "up_search": [                    "on",                     null                ],                 "up_fb_share": [                    "on",                     null                ],                 "system": [                    "on",                     null                ],                 "up_cheers": [                    "off",                     null                ],                 "barcode_search": [                    "on",                     null                ],                 "up_twitter_import": [                    "on",                     null                ],                 "up_twitter_friend_suggestions": [                    "on",                     null                ],                 "up_fb_import": [                    "on",                     null                ],                 "up_slideshow": [                    "on",                     {}                ],                 "up_fb_friend_suggestions": [                    "on",                     null                ]            }        },         "user": {            "xid": "RGaCBFg9CsDYVvm2kchbcw",             "name": "Tester VisHealth",             "short_name": "Tester",             "image": "user/image/i/51b4916b03eb185d1c1948a5_RGaCBFg9CsDYVvm2kchbcw_137078820345_2781804_photo.jpeg",             "has_settings": true,             "last": "VisHealth",             "type": "user",             "first": "Tester"        }    }}

待续。。。

原创粉丝点击