Garmin Health API によって返される結果は空の配列です
P粉842215006
2023-08-30 16:53:05
<p>Garmin のヘルス API を使用すると、空の応答配列が返され、エラーは表示されず、空の配列のみが返されます。混乱していて、解決策が見つかりません。コードは次のとおりです: </p> ;
<pre class="brush:php;toolbar:false;">パブリック静的関数 get_garmin_health_data(Request $request)
{
// dd(date('Y-m-d H:i:s'));
$garmin_consumer_key = env('CONSUMERKEY');
$garmin_consumer_secret = env('CONSUMERSECRET');
$twitter_access_token = $request->oauth_token ?? '';
$twitter_access_token_secret = $request->oauth_token_secret ?? '';
$twitter_version = '1.0';
$sign_method = 'HMAC-SHA1';
date_default_timezone_set('アジア/コルカタ');
// $end_time = Carbon::now()->timestamp; // 1552296328 のようなタイムスタンプを生成します
// $start_time = Carbon::now()->subDays(1)->タイムスタンプ;
$start_time = strtotime('-20 時間');
$end_time = 時間();
// dd($start_time);
// $time = $request->oauth_nonce;
$time = 時間();
// $post = '{"event":{"type":"message_create","message_create":{"target":{"recipient_id":"123"},"message_data" :{"テキスト":"Hello world"}}}}';
$post = '{}';
$url = 'https://apis.garmin.com/wellness-api/rest/dailies';
$param_string = 'oauth_consumer_key=' 。 $garmin_consumer_key 。
'&oauth_nonce=' 。 $time 。
'&oauth_signature_method=' 。 $sign_method 。
'&oauth_timestamp=' 。 $time 。
'&oauth_token=' 。 $twitter_access_token 。
'&oauth_version=' 。 $twitter_version 。
'&uploadEndTimeInSeconds=' 。 $end_time 。
'&uploadStartTimeInSeconds=' 。 $start_time;
// POST用に生成签名基本文字列
$base_string = 'GET&' 。 rawurlencode($url) 。 「&」 。 rawurlencode($param_string);
// dd($base_string);
$sign_key = rawurlencode($garmin_consumer_secret) 。 「&」 。 rawurlencode($twitter_access_token_secret);
// 唯一生成签名
$signature =base64_encode(hash_hmac('sha1', $base_string, $sign_key, true));
$curl_header = 'OAuth oauth_consumer_key='' 。 rawurlencode($garmin_consumer_key) 。 '"、' 。
'oauth_nonce="' 。 rawurlencode($time) 。 '"、' 。
「oauth_signature=」 。 rawurlencode($signature) 。 '"、' 。
「oauth_signature_method=」 。 $sign_method 。 '"、' 。
'oauth_timestamp="' 。 rawurlencode($time) 。 '"、' 。
「oauth_token=」 。 rawurlencode($twitter_access_token) 。 '"、' 。
「oauth_version=」 。 $twitter_version 。 '''';
$url2 = 'https://apis.garmin.com/wellness-api/rest/dailies?uploadStartTimeInSeconds=' 。 $start_time 。 '&uploadEndTimeInSeconds=' 。 $end_time;
$curl =curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => $url2、
CURLOPT_RETURNTRANSFER =>真実、
CURLOPT_ENCODING => ”、
CURLOPT_MAXREDIRS => 10、
CURLOPT_TIMEOUT => 0、
CURLOPT_FOLLOWLOCATION =>真実、
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1、
CURLOPT_CUSTOMREQUEST => '得る'、
CURLOPT_HTTPHEADER =>配列(
'認可:' 。 $curl_header、
)、
));
$response =curl_exec($curl);
dd($response);
curl_close($curl);
$res = json_decode($response);</pre>
<p>この問題に対しては、可能であれば PHP または CURL リクエストを使用して回答する解決策を提供します。
私もこの Garmin-health API を扱っていますが、空の応答 (例: []) が返されます。 でも私はそう思います!私のプロフィールには何もアクティビティがないため、この応答が返されます。