2013-06-18 24 views
5

Tôi đang cố gắng tìm tất cả thời gian freebusy từ lịch chính của tôi, nhưng tôi không thể nhận được truy vấn để nhận ra các tham số của tôi.Google freebusy api gọi trong đường ray sẽ không nhận ra tham số

Trong điều khiển của tôi, tôi có:

@freetimes = client.execute(
    :api_method => service.freebusy.query, 
    :parameters => { 
    'timeMin' => '2013-06-15T17:06:02.000Z', 
    'timeMax' => '2013-06-29T17:06:02.000Z', 
    'items' => [{'id' => '[email protected]'}] 
    }, 
    :headers => {'Content-Type' => 'application/json'}) 

phản ứng tôi nhận được là:

--- !ruby/object:Google::APIClient::Schema::Calendar::V3::FreeBusyResponse 
data: 
error: 
    errors: 
    - domain: global 
     reason: required 
     message: Missing timeMin parameter. 
    code: 400 
    message: Missing timeMin parameter. 

Tuy nhiên là cho thấy rằng nó mất các thông số, nhưng họ không gắn bó với truy vấn:

--- !ruby/object:Google::APIClient::Result 
request: !ruby/object:Google::APIClient::Request 
    parameters: 
    timeMin: '2013-06-15T17:06:02.000Z' 
    timeMax: '2013-06-29T17:06:02.000Z' 
    items: 
    - id: [email protected] 

Bất kỳ trợ giúp nào giải quyết vấn đề này sẽ được đánh giá cao!

+0

Tôi đã giải quyết nó, dựa trên phản hồi được tìm thấy [ở đây] [1] Hàm băm cần được chuyển thành JSON để chuyển đúng cách không giống như các phương thức Lịch khác. [1]: http: //stackoverflow.com/questions/7455744/post-json-to-api-using-rails-and-httparty – tristantoye

Trả lời

6

giải quyết điều này bằng cách xác định cơ thể yêu cầu

client.execute(
    :api_method => service.freebusy.query, 
    :body => JSON.dump({ 
    :timeMin => , 
    :timeMax => , 
    :items => 
    }), 
    :headers => {'Content-Type' => 'application/json'}) 
1

Tôi đã có một vấn đề tương tự. Một cách khác, là bạn có thể xây dựng một đối tượng FreeBusyRequest.
Như thế này:

body = Google::Apis::CalendarV3::FreeBusyRequest.new 
body.items = [calendar_id] 
body.time_min = "2016-06-29T13:00:00z" 
body.time_max = "2016-06-29T21:00:00z" 
body 

`` ` và sau đó bạn có thể vượt qua nó vào một đối tượng CalendarService như thế này:

service = Google::Apis::CalendarV3::CalendarService.new 
service.authorization = client 
service.query_freebusy(body) 

điều này chắc chắn sẽ trở lại một phản hồi trạng thái 200 với nội dung.

Các vấn đề liên quan