我提取了 google fit 数据源。我已阅读文档,我需要获取此格式以从其余 API 获取每个数据源的响应数据集 -
https://www.googleapis.com/fitness/v1/users/me/dataSources/ derived:com.google.step_count.delta:1234567890:Example%20Manufacturer:ExampleTablet:1000001 /datasets/1397513334728708316-1397515179728708316
这是我试过的流 ID -
dataStreamId: "derived:com.google.active_minutes:com.google.android.fit:Xiaomi:Redmi 7A:220c08bd:top_level"
我做了一个循环来为用户提取每个数据源的所有数据集。
这是我的代码-
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\User;
use Google_Client;
use Google_Service_Fitness;
class Health extends Controller
{
public function fetch_health_data()
{
$user_id = auth()->user()->id;
$user = User::find($user_id);
$user_session = $user->users_sessions->last();
$client = new Google_Client();
$client->setApplicationName('Fitness API');
$client->setAccessType('offline');
$client->setAccessToken($user_session->access_token);
$fitnessService = new Google_Service_Fitness($client);
$dataSources = $fitnessService->users_dataSources->listUsersDataSources("me");
$healthData = [];
foreach ($dataSources as $dataSource) {
$dataType = $dataSource->dataType->name;
$dataStreamId = $dataSource->dataStreamId;
dd($dataSource);
$dataSets = $fitnessService->users_dataSources_datasets->get("me", "me", $dataStreamId);
dd($dataSets);
foreach ($dataSets->getPoint() as $dataPoint) {
$startTimeMillis = $dataPoint->getStartTimeNanos() / 1000000;
$endTimeMillis = $dataPoint->getEndTimeNanos() / 1000000;
$healthData[] = [
'user_id' => $user_id,
'data_type' => $dataType,
'start_time' => date('Y-m-d H:i:s', $startTimeMillis / 1000),
'end_time' => date('Y-m-d H:i:s', $endTimeMillis / 1000),
'value' => $dataPoint->getValue(),
];
}
}
dd($healthData);
return $healthData;
}
}
当我尝试从 $datasets 获取数据时,出现此错误 -
{ "error": { "code": 400, "message": "Invalid datasetId: derived:com.google.active_minutes:com.google.android.fit:Xiaomi:Redmi 7A:220c08bd:top_level", "errors": [ { "message": "Invalid datasetId: derived:com.google.active_minutes:com.google.android.fit:Xiaomi:Redmi 7A:220c08bd:top_level", "domain": "global", "reason": "invalidArgument" } ], "status": "INVALID_ARGUMENT" } }