huitiemesens / fitbit
基于新API的popthestack/fitbit分支
dev-master
2015-10-14 09:59 UTC
Requires
- php: >=5.3.0
- huitiemesens/oauth: dev-master
This package is not auto-updated.
Last update: 2024-09-14 16:13:34 UTC
README
基于OAuth的FitBit REST API的基本封装。有关他们OAuth实现的详细信息,请参阅dev.fitbit.com。
此库和Fitbit API都处于测试版。
此库不需要PHP OAuth扩展。它应该在PHP >= 5.3的任何服务器上运行。
安装
可以使用composer安装此包:"huitiemesens/fitbit": "dev-master"
使用方法
您需要一个客户端密钥和密钥。您可以通过在http://dev.fitbit.com注册应用程序来获取它们。
简单但完整的OAuth工作流程示例
$factory = new \Fitbit\ApiGatewayFactory; $factory->setCallbackURL($callback_url); $factory->setCredentials($consumer_key, $consumer_secret); $adapter = new \OAuth\Common\Storage\Session(); $factory->setStorageAdapter($adapter); $auth_gateway = $factory->getAuthenticationGateway(); if (isset($_GET['oauth_token']) && isset($_GET['oauth_verifier'])) { $auth_gateway->authenticateUser($_GET['oauth_token'], $_GET['oauth_verifier']); } elseif (isset($_GET['connect'])) { $auth_gateway->initiateLogin(); } if ($auth_gateway->isAuthorized()) { $user_gateway = $factory->getUserGateway(); $user_profile = $user_gateway->getProfile(); echo '<pre>'; print_r($user_profile); echo '</pre>'; } else { echo 'Not connected.'; }
如果您想从会话中检索OAuth令牌和密钥以存储在其他地方(例如数据库)
$storage = $factory->getStorageAdapter(); $token = $storage->retrieveAccessToken('FitBit'); // Save these somewhere: $oauth_token = $token->getRequestToken(); $oauth_secret = $token->getRequestTokenSecret();
以下是使用OAuth令牌和密钥而不使用Session
存储适配器的示例。这有点繁琐,但它是可行的。如果有时间,我愿意用不需要强制过多...东西的库替换当前的OAuth库。
$token = new \OAuth\OAuth1\Token\StdOAuth1Token(); $token->setRequestToken($oauth_token); $token->setRequestTokenSecret($oauth_secret); $token->setAccessToken($oauth_token); $token->setAccessTokenSecret($oauth_secret); $adapter = new \OAuth\Common\Storage\Memory(); $adapter->storeAccessToken('FitBit', $token); $factory->setStorageAdapter($adapter); $user_gateway = $factory->getUserGateway(); $food_gateway = $factory->getFoodGateway(); $user_profile = $user_gateway->getProfile(); $user_devices = $user_gateway->getDevices(); $foods = $food_gateway->searchFoods('banana split'); echo '<pre>'; print_r($user_profile); print_r($user_devices); print_r($foods); echo '</pre>';
注意
- 默认情况下,所有请求都假定您想要授权用户(查看者)的数据。然而,有几个端点您可以用来访问其他Fitbit用户的数据,前提是您有权访问他们的数据。这是通过设置Fitbit用户ID来实现的,该ID在
ApiGatewayFactory
和端点网关(例如UserGateway
、FoodGateway
)上的setUserID
方法中可用。 - 订阅:此库有一些基本的添加/删除订阅的方法,但跟踪列表和维护服务器端点以接收Fitbit通知的责任在您身上,同时还需要在http://dev.fitbit.com上注册它们。有关更多信息,请参阅Subscriptions API。
新API
- 在BodyGateway中的getWeight:允许在一段时间、日期范围或特定日期内获取所有体重记录。更多信息请查看https://wiki.fitbit.com/display/API/API-Get-Body-Weight。