Google 拟合数据集提取

问题描述 投票:0回答:0

我提取了 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" } }

laravel rest google-api-php-client google-fit
© www.soinside.com 2019 - 2024. All rights reserved.