2

尝试使用 PHP cURL 访问 Toggl 报告 API 后,我没有运气,现在尝试使用 JavaScript 进行 HTTPRequest。我收到来自 API 的 200 响应,所以知道我已连接,我只是不知道下一步该做什么。

var xhr = new XMLHttpRequest();
xhr.open("GET", "https://toggl.com/reports/api/v2", false);
xhr.send();
document.write("Status code: " + xhr.status + " ");
document.write(xhr.statusText + "</br>");

我尝试按照文档中的描述设置请求标头,但这会杀死 200 响应,所以我知道我做错了......

xhr.setRequestHeader('Authorization':'[api token encoded with base 64]','Content-type':'application/json');

有什么建议吗?

谢谢

4

2 回答 2

2

我知道这已经晚了几年,但如果有人处于相同的位置,这对我有用:

var xhr = new XMLHttpRequest();
xhr.open("GET", "https://toggl.com/reports/api/v2/weekly?user_agent=yourname@domain.com&workspace_id=012345", false);
xhr.setRequestHeader('Authorization', 'Basic XXXXXX');
xhr.send();
document.write("Status code: " + xhr.status + " ");
document.write(xhr.statusText + "</br>");

其中 XXXXXX 是您的 api 密钥加上以 base-64 编码的字符串 ":api_token"。

因此,如果您的 api 密钥是 12345,您可以在 base-64 中对字符串“12345:api_token”进行编码以获得 MTIzNDU6YXBpX3Rva2Vu。

在 javascript 中,您可以使用 btoa 函数来获取 base-64 编码的字符串:btoa("12345:api_token")。

注意:请注意,您需要在 URL 中指定user_agentworkspace_id,如切换 api 文档中所述:https ://github.com/toggl/toggl_api_docs/blob/master/reports.md

找到 workspace_id 的最简单方法是单击名为“Team”的选项卡并从 URL 复制数字:https: //toggl.com/app/team/012345

user_agent 是您的应用程序的名称或您的电子邮件地址。

于 2015-08-07T15:29:03.923 回答
0

我不知道您使用的任何 API:在 JS 的标头中,尝试将它们替换为 ,

xhr.setRequestHeader('Authorization','[api token encoded with base 64]','Content-type','application/json');
于 2013-10-18T12:38:05.660 回答