来自使用CORS PATCH请求的Google Calendar API出错400

时间:2018-04-15 06:20:17

标签: javascript json cors xmlhttprequest google-calendar-api

我已经看到了一些与此相关的问题,但他们都使用完整的JavaScript客户端库。我正在使用带有OAuth 2.0访问令牌的CORS请求,并且语法不同。由于我收到400错误,我相信我的语法是问题,所以我希望我的问题归结为。

我正在开发一个与Google Calendar API交互的日历应用程序,可以成功读取/显示用户的事件并将其删除。但是,我正在尝试添加事件编辑功能,但无法获取PATCH请求。这是我用来生成请求并设置适当标头的代码:

gapi.load('auth2', function() {
    var localStorage = window.localStorage;
    var access_token = localStorage.getItem('access_token');

    var getEvent = new XMLHttpRequest;
    getEvent.open('GET', 'https://www.googleapis.com/calendar/v3/calendars/primary/events/' + app2.event.googleId);
    getEvent.setRequestHeader('Authorization', 'Bearer ' + access_token);
    getEvent.send();

    getEvent.onreadystatechange = function() {
        if (getEvent.readyState === 4) {
            var response = JSON.parse(getEvent.response);
            response.summary = 'New summary';

            var xhr = new XMLHttpRequest;
            xhr.open('PATCH', 'https://www.googleapis.com/calendar/v3/calendars/primary/events/' + app2.event.googleId);
            xhr.setRequestHeader('Authorization', 'Bearer ' + access_token);
            xhr.setRequestHeader('Content-Type', 'application/json');
            xhr.send(response); 
        }
    };
});

来自本地存储的访问令牌是正确的,googleId也是如此,我将连接到URL的末尾。我已经将这两件事用于不同的请求,并且它们完美地工作。

根据Google的文档(https://developers.google.com/calendar/v3/reference/events/patch),更改应包含在请求正文中。 xhr.send()中的语法问题是什么?我尝试了各种不同的单引号,双引号等组合,并继续得到400错误。

谢谢!

0 个答案:

没有答案