2013-03-26 1 views
0

Google 캘린더 API를 사용하는 서버를 작성 중입니다. 나는 하나 개의 성공적인 요청을했지만, is supposed to create a new Calendar이이 POST 요청은 HTTP 응답 본문에 다음과 같은 오류 반환에 의해 내가 Node.js를, Express 및 Request라는 노드의 HTTP 라이브러리의 래퍼를 사용하고Google 캘린더 API 요청이 Node.js (Express) + 요청 라이브러리로 진행되지 않음

{ 
"error": { 
    "errors": [ 
    { 
    "domain": "global", 
    "reason": "required", 
    "message": "Required" 
    } 
    ], 
    "code": 400, 
    "message": "Required" 
} 
} 

을 (Mikeal)에게 요청하여 Google API에 요청합니다. 나는 단지 오류 메시지가 매우 비밀 스럽기 때문에이 질문을한다. 누군가가 이것을 이해하는 데 도움을 줄 수 있다면, 좋을 것입니다!

var setupTasksCalendar = function(req, callback) { 
    Oauth.makeApiCall({ 
     method: 'POST', 
     url: 'https://www.googleapis.com/calendar/v3/calendars', 
     body: JSON.stringify({ 
     summary: "Google Calendar Tasks" 
     }) 
    }, req, function(e, body) { 
     if (e) console.log(e); 
     console.log(body); 
     callback(); 
    }); 
    }; 
가 이

makeApiCall 방법 (래퍼 방법 만든다 : (새 달력을 만들 수있는 요청을)

setupTasksCalendar 방법 :

일부 코드 샘플은 더 많은 이해를 돕기 위해 아래에 포함되어 있습니다 필요한 확인을하고 인증 토큰을 URL에 추가합니다.) :

this.makeApiCall = function(parameters, req, callback) { 
    if (Date.now() >= req.session.user.token_expiration_time) { 
     self.Auth.updateAccessToken(req, function() { 
     parameters.url = self.addAccessToken(parameters.url, req); 
     request(parameters, function(e, r, body) { 
      if (e) console.log(e); 
      callback(e, body); 
     }); 
     }); 
    } else { 
     parameters.url = self.addAccessToken(parameters.url, req); 
     request(parameters, function(e, r, body) { 
     if (e) console.log(e); 
     callback(e, body); 
     }); 
    } 
    }; 
+0

https://www.googleapis.com/calendar/v3/ 캘린더는 수동으로 나에게 동일한 응답을 제공합니다. 귀하의 API 키 또는 뭔가를 포함해야합니까? –

+0

요청에 내 access_token을 포함 시켰습니다. 나는 다른 요청을 성공적으로 만들었 기 때문에'makeApiCall' 함수가 다른 요청과 함께 작동한다는 것을 알고 있으며 그 함수는 URL에 access_token을 자동으로 추가합니다. 나는 그것이 그렇게 생각하지 않는다. –

+0

올바른 URL을 사용하고 계십니까? –

답변

1

나는 그것을 이해했다! JSON을 몸에 넣는 것만으로는 충분하지 않았습니다. 요청이 application/jsoncontent-type으로되어 있는지 확인해야했습니다. 이와

body: JSON.stringify({ 
    summary: "Google Calendar Tasks" 
    }) 

: 요청에서이 작업을 수행하려면, 당신은 ...

이 교체했습니다 방문

json: { 
    summary: "Google Calendar Tasks" 
    }