2

Toggl Reporting API にアクセスしようとしています。

API に接続するが、次のエラー メッセージが表示される cURL を使用して PHP でフォローしようとしました:「このメソッドは使用できない可能性があります。」私はWebサービスに非常に慣れていないので、なぜこれが当てはまるのかについての光は役に立ちます。明らかな何かを見逃しているか、完全に間違った方向に進んでいる可能性があるため、その場合はお詫び申し上げます。

<?php
$userAgent = 'xxx';//username
$token = 'xxx';//token
$returned_content = get_data('https://toggl.com/reports/api/v2/summary?&workspace_id=[workspaceid]&since=2013-05-19&until=2013-05-20&user_agent=[username here]');
print_r($returned_content);

function get_data($url) {
    $ch = curl_init();
    $timeout = 5;
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
    curl_setopt($ch, CURLOPT_USERAGENT, $userAgent);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
    curl_setopt($ch, CURLOPT_USERPWD, $token.':api_token');
    $data = curl_exec($ch);
    curl_close($ch);
    return $data;
}
?>

編集:別のアプローチを試みました。次のコードを実行すると、エラー メッセージが表示されなくなり、コードは実行されているように見えますが、応答を画面に出力できません。print_r 以外の出力を表示するために必要な特定のことはありますか? (Toggl API は JSON を返します)。ありがとう。

$json = curl%20-v%20-u%[myapitoken]:api_token%20https://toggl.com/reports/api/v2/weekly?workspace_id=[id]&wsid=282507&since=2012-08-19&until=2013-09-20&user_agent=[user].json; print_r($json);

編集:ついに解決しました!コードは次のとおりです。

$workspace_id = '[id here]';
$user_agent = '[user agent here]'; // no spaces
$api_token = '[token here]';
$report_url = 'https://toggl.com/reports/api/v2/weekly?user_agent='.$user_agent.'&since=2013-08-01&until=2013-09-01';
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET');
curl_setopt($ch, CURLOPT_USERPWD, $api_token . ':api_token');
curl_setopt($ch, CURLOPT_URL, $report_url . '&workspace_id=' . $workspace_id);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
$result = curl_exec($ch);

$result = json_encode($result);

これが将来誰かに役立つことを願っています!

4

1 に答える 1

0

ご理解のとおり、このメッセージは が原因でお送りしていますCURLOPT_SSL_VERIFYPEER == FALSE

コードから次の文字列を削除してみてください。

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);

間違っているかもしれませんが、このオプションを使用すると、Toggl サーバーから「HTTP 501 Not Implemented」エラーが表示され、「このメソッドは使用できない可能性があります」というまったく同じメッセージが表示されると思います。

于 2013-09-27T16:25:25.410 に答える