popthestack/fitbit

支持OAuth的Fitbit库。

dev-master 2014-12-19 16:04 UTC

This package is not auto-updated.

Last update: 2024-09-23 14:54:47 UTC


README

基于OAuth的FitBit REST API的基本封装。有关其OAuth实现的详细信息,请参阅dev.fitbit.com

该库和Fitbit API均为测试版。

该库不需要PHP OAuth扩展。它应在PHP >= 5.3的任何服务器上运行。

安装

可以使用composer安装此包:"popthestack/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用户的数据,前提是有权访问他们的数据。这是通过在ApiGatewayFactory和端点网关(例如UserGatewayFoodGateway)上使用setUserID方法来实现的。
  • 订阅:此库有一些基本方法来添加/删除订阅,但跟踪列表并维护服务器端点以接收Fitbit通知的责任在于您,并在http://dev.fitbit.com上注册它们。有关更多信息,请参阅订阅API