我正在研究一个基于laravel的项目,我需要从Toggl帐户导入时间条目。 Toggl似乎已经安装了正确的API,但是由于某种原因,我无法通过API提取记录。
我正在使用下面提到的库来访问Toggl API。 https://medium.com/laravel-5-the-right-way/using-guzzlehttp-with-laravel-1dbea1f633da
对于API的每个请求,我都遇到了错误。
GuzzleHttp \ Exception \ ClientException(403)
客户端错误:GET https://toggl.com/api/v8/time_entries?user_agent=deepak%40gmail.com&workspace_id=257895&with_related_data=1
导致了403 Forbidden
响应
我试图通过添加或删除随每个请求一起发送的(如下所述)标头元素来修复此问题。但这仍然行不通。
use GuzzleHttp\Exception\GuzzleException;
use GuzzleHttp\Client;
$client = new Client;
$credentials = base64_encode('e5e8238ca0fee3ca726e486733c87456:api_token');
$url = 'https://toggl.com/api/v8/time_entries';
$response = $client->get($url,
[
'referer' => true,
'headers' => [
'Authorization: Basic ' => $credentials,
'Content-Type: application/json',
'User-Agent' => 'Mozilla /5.0 (Compatible MSIE 9.0;Windows NT 6.1;WOW64; Trident/5.0)',
'Accept' => 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8',
'Accept-Encoding' => 'gzip, deflate, br',
],
'query' => [
'user_agent' => 'deepak@gmail.com',
'workspace_id' => '8756952',
'with_related_data' => true,
],
"http_errors" => false,
]);
dd($response);
它应该从Toggl检索记录并在浏览器上打印JSON。
有趣的是,我能够使用以下命令通过命令行界面提取记录。 curl -v -u e5e8238ca0fee3ca726e486733c85468:api_token -X GET https://www.toggl.com/api/v8/time_entries
请注意,在上述代码段中,出于明显原因,我更改了API密钥。
谢谢