Author : iascchen(at)gmail(dot)com
Date : 2013-07-17
新浪微博 : @问天鼓
这些 API 通过对 Codoon 运动的 Android 版本 下载地址 进行了反编译所得到的,错误在所难免,随时可能失效,仅供大家学习和自娱自乐。
下面所列举的 API 均为读取运动数据相关的API。不包括其他发消息、发微博、更新状态等功能。
这个工作已经做了些日子,一直想等着用咕咚手环数据测试一下,所以没有写下来。不过照着目前网友们对咕咚手环的测试样品的评论来看,估计还需要一段时间才能有结果。申波在七月初参加2013移动互联网创新大会时透露 Codoon 官方的 API 要到明年才会开放。在目前这个过渡时期,大家可以用这个来玩玩吧。
详细内容如下:
-
概述和登录
-
用户运动成就
-
用户运动历史
-
智能配件相关 API(疑似)
-
其他
1. 概述和登录
客户端请求基本说明
Codoon App 一般通过 HTTP 协议与 api.codoon.com 通讯。在进行其他访问之前,必须先登录。可以用 Codoon 网注册用户通过 HTTP Basic 协议进行登陆。正确登录之后,在每次请求的HTTP中,需要将认证时的所获得 access_token 值设置到 HTTP Header:**Authorization** 里,即可保持会话。除此之外,还需要将**Charset**设置为 UTF-8。如:
Authorization : Bearer 4836c512060faa34793730959daa901f
Charset : UTF-8
Codoon App 还支持利用新浪微博、腾讯微博、人人网的用户,通过OAuth协议登录(这几种登录方式本文并未论述)。
带参数的请求
需要向 Server 端提交参数的请求,均需要采用 POST 方式传参。比较特殊的是,在 Codoon 的接口中,需要将参数需要转化为 JSON 之后,放在 POST 体中再提交。
下面的 Python 代码作为参考示例:
startDate = "2013-06-01"
endDate = "2013-06-30"
command = "http://api.codoon.com/api/gps_statistic"
request_data = {"from_date" : fromDate , "to_date" : toDate}
response = requests.post(command , data = json.dumps(request_data), headers = self.codoonHeaders )
content = json.loads(response.content)
利用 Codoon 网注册用户登录
Request:
POST
http://api.codoon.com/token
Params:
# 下面两个参数为常量,说明登录方式
"grant_type" : "password" ,
"scope" : "user" ,
# Client_ID 的值为来自于应用的静态变量值。此处一般不需修改。
"client_id" : "dc039f07e003da02938a5bc4605b5acc" ,
# 您个人在 Codoon 网注册的Email地址和用户密码。
"email": email,
"password" : password
Return :
Access Token 值为 JSON 内容中的 "access_token" : "4836c512060faa34793730959daa901f"
完整JSON示例如下:
{
"user_id": "bcf5ea34-891f-xxxx-a26f-496604a5xxxx",
"access_token": "4836c512060faa34793730959daa901f",
"token_type": "bearer",
"scope": "user",
"expire_in": 93312000,
"refresh_token": "fb17cfd5ab4b61ee23de1a4c28969fec"
}
获得最新可用 Android 软件版本信息
Request:
GET
http://static.codoon.com/app/android/version_run.xml
Params:
无
Return :
完整XML示例如下:
<client>
<version>53</version>
<date>2013-07-10 18:33:59</date>
<description>咕咚运动+客户端3.3.8</description>
<app_name>codoonsportsv3.3.8.apk</app_name>
<app_url>http://static.codoon.com/app/android/codoonsports.apk</app_url>
</client>
获得用户基本信息凭证
从数据上看,用户基本信息凭证所包含的数据主要在软件的“更多”页面中显示。
Request:
GET
http://api.codoon.com/verify_credentials
Params:
无
Return :
完整JSON示例如下:
{
"get_icon_tiny": "http://img3.codoon.com/portraitce67a9da19db4d6ebf85f8eeb24d44f4!24m24",
"mobilenumber": "I1370574493782",
"domain": "~iyp2ix",
"certificatename": "",
"weight": 58.2,
"week_goal_value": 70000,
"get_icon_large": "http://img3.codoon.com/portraitce67a9da19db4d6ebf85f8eeb24d44f4!220m220",
"height": 160,
"_auto_id": 1053580,
"portrait": "http://img3.codoon.com/portraitce67a9da19db4d6ebf85f8eeb24d44f4",
"id": "bcf5ea34-891f-xxxx-a26f-496604a5xxxx",
"is_newuser": true,
"mobile_portraits": [],
"nick": "iascchen",
"descroption": "\u6ce1\u6ce1",
"followers": 0,
"location": "\u5317\u4eac ",
"last_login": 0,
"get_icon_middle": "http://img3.codoon.com/portraitce67a9da19db4d6ebf85f8eeb24d44f4!50m50",
"email": "iasc@163.com",
"certificateinfo": "",
"installed_apps": "CDN_SPORTS CDN_LEPHONERUN",
"realname": " ",
"emailverified": true,
"stridelength": 66,
"verify_code": "6281585409bf448eb8cae5b54da57253",
"birthday": {
"y": 2013,
"m": 6,
"d": 9
},
"routes_count": 3,
"hobby": "\u8dd1\u6b65",
"get_icon_xlarge": "http://img3.codoon.com/portraitce67a9da19db4d6ebf85f8eeb24d44f4!640m640",
"fighting_level": 1,
"mobile_portraits_l": [],
"get_icon_small": "http://img3.codoon.com/portraitce67a9da19db4d6ebf85f8eeb24d44f4!40m40",
"gender": "0",
"followings": 1,
"week_goal_type": "steps",
"certificateid": "",
"mobile_portraits_x": [],
"runstridelength": 80,
"mobileverified": false,
"group_ids": "",
"tmp_portrait": "http://img3.codoon.com/portraitce67a9da19db4d6ebf85f8eeb24d44f4",
"age": 0,
"address": ""
}
2. 用户运动成就
用户成就积分
用户成就激励系统上的积分和卡币展示。
Request:
GET
http://api.codoon.com/api/get_user_growing_point_related
Params:
无
Return :
{
"status": "OK",
"data": {
"fighting_level": 1,
"user_growing_point": 3,
"user_calbank_balance": 300
},
"description": ""
}
用户运动纪录
用户个人纪录显示。
Request:
GET
http://api.codoon.com/api/gps_highest_record
Params:
无
Return :
{
"status": "OK",
"data": {
"ride_record": {
"route_count": 0
},
"run_record": {
"route_count": 0
},
"ski_record": {
"route_count": 0
},
"skate_record": {
"route_count": 0
},
"walk_record": {
"highest_speed_time": "2013-06-14T16:02:31",
"highest_time": 740.0,
"highest_speed": 10.15969,
"highest_length_time": "2013-06-24T18:39:10",
"highest_time_time": "2013-06-24T18:39:10",
"route_count": 3,
"highest_kmspeed": 643,
"highest_kmspeed_time": "2013-06-24T18:39:10",
"highest_length": 1160
}
},
"description": ""
}
用户奖章
用户奖章展示。
Reques