Top Menu

Fitbit 开发日志

用户权限认证

Fitbit使用OAuth2来进行权限认证,而PHP下的OAuth2可以使用下面的插件

thephpleague/oauth2-client

它有一个第三方插件

djchen/oauth2-fitbit

针对Fitbit的认证流程做了兼容,安装时只需要composer require这个第三方兼容插件即可

OAuth2认证流程

1.将用户引导至Fitbit官方授权页面,

2.待用户授权后在请求末尾附加一个code到之前设定的callback地址

3.callback地址收到带有code的请求后,用附加code的请求申请accessToken和RefreshToken

4.callback收到官方回复的accessToken和RefreshToken后保存在本地,之后使用accessToken加持后的URL发起Get请求,如果accessToken过期,用RefreshToken申请新的accessToken和refreshToken。

保存和传递accessToken

oauth2-client插件中使用的accessToken是一个对象,所以不能简单的在数据库中分别存储accessToken和RefreshToken值,否则无法在之后的操作中使用accessToken的方法

这里可以使用序列化将对象转换为字符串后保存到数据库中

从数据库获取序列值后,通过解开序列化操作来将其展开为完整的对象

刷新accessToken

Fitbit的accessToken有效期为一小时,过期后,需要通过refreshToken来重新获取accessToken和refreshToken。

值得注意的是,在成功刷新一次之后,之前的refreshToken就过期了,需要将新获取的refreshToken保存进数据库中,以备下次刷新。因为保存和读取accessToken的操作在多个场景会用到,所以可以单独写一个方法,用于在不同的场景读取和调用accessToken。

可以通过 if ($existingAccessToken->hasExpired()) 来判断当前accessToken是否过期,过期后执行刷新操作

可以设定cron任务,每隔半小时自动检测当前accessToken是否过期。

获取数据

在获得用户的accessToken后,就可以通过Get发起数据请求了。

这个在之前用于OAuth的插件中已提供了相应的方法

在获取了数据之后,就可以对数据进行处理了

数据处理

 

接口调用频率限制

Fitbit的调用频率限制为150次/小时,按单个API请求为基准计一次,即如果一个请求同时调用了步数和卡路里两个API接口,那么就按两次调用来算。

定时任务

在用crontab定时执行获取Fitbit数据的时候,发现无法虽然可以获取数据,但是却无法更新json文件,查了很久才发现原来是读写文件的操作用的是相对地址,而在crontab中需要改为使用绝对地址。

(待续。。。)

There are no comments yet

  • Hello, guest

Powered by WordPress. Designed by WooThemes