基于新API的popthestack/fitbit分支

dev-master 2015-10-14 09:59 UTC

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和端点网关(例如UserGatewayFoodGateway)上的setUserID方法中可用。
  • 订阅:此库有一些基本的添加/删除订阅的方法,但跟踪列表和维护服务器端点以接收Fitbit通知的责任在您身上,同时还需要在http://dev.fitbit.com上注册它们。有关更多信息,请参阅Subscriptions API

新API