Hi Toshiro, It was nice meeting you on the Google Apps hangout today. Please let us know if inspecting the JSON generated by the library has revealed anything about the cause of the error.
Thanks, Dan On Mon, Nov 7, 2011 at 8:02 PM, tks <[email protected]> wrote: > bahhh, never mind. Here's the code in a gist: > > https://gist.github.com/1346963 > > Sorry for the list spam. > > > > On Nov 7, 7:54 pm, tks <[email protected]> wrote: > > Attempt to fix formatting of code examples: > > > > EventController.rb > > > > event_hash = { :data => { > > :title => "Tennis with Beth", > > :details => "Meet for a quick lesson.", > > :transparency => "opaque", :status => > > "confirmed", :location => "Rolling Lawn Courts", > > :when => [{ > > :start => "2012-04-17T15:00:00.000Z", > > :end => "2012-04-17T17:00:00.000Z" }] > > } } > > > > event_data = event_hash.to_json auth_string = "Bearer " > > + google_oauth2_credential.access_token > > header_hash = { 'Content-Type' => 'application/json', > > 'Authorization' => auth_string, > > 'GData-Version' => '2' } > > response = post_to_https('https://www.google.com/calendar/feeds/ > > default/private/full', > > event_data, header_hash) #note see > > ApplicationController paste below to see the post_to_https method > > > > if response.code == '302' uri_string = > > response.response['Location'] response = post_to_https(uri_string, > > event_data, header_hash) render :text => "302 " + response.body > > else render :text => "not 302 " + response.body) end > > ApplicationController.rb > > > > def post_to_https(url_string, params_hash, header_hash = {}) uri > > = URI.parse(url_string) http = Net::HTTP.new(uri.host, uri.port) > > http.use_ssl = true http.verify_mode = > > OpenSSL::SSL::VERIFY_PEER request = > > Net::HTTP::Post.new(uri.request_uri) > > request.set_form_data(params_hash) unless header_hash.empty? > > header_hash.each { |key, value| request[key] = value } end > > return http.request(request) end > > > > On Nov 7, 7:35 pm, tks <[email protected]> wrote: > > > > > > > > > > > > > > > > > Hello, > > > > > I am trying to set up my Rails application to connect to the calendar > > > api. I am following the Oauth2 documentation here: > > > > >http://code.google.com/apis/accounts/docs/OAuth2.html#SS > > > > > and the instructions for creating a single event on a user's private > > > calendar here: > > > > >http://code.google.com/apis/calendar/data/2.0/developers_guide_protoc. > .. > > > > > I have been able to generate the Oauth2 access and refresh tokens > > > using the server side strategy, but whenever I query the api I get the > > > following error: > > > > > {"apiVersion":"2.6","error":{"code":400,"message":"Invalid > > > JSON","errors": > > > [{"domain":"GData","code":"invalidJson","internalReason":"Invalid > > > JSON"}]}} > > > > > (This is the same error given in this threadhttp:// > groups.google.com/group/google-calendar-help-dataapi/browse_th... > > > except I am passing GData-Version: 2 into the http post header, so the > > > apiVersion is different ) > > > > > The json I am using is the example event data given in the protocol > > > document in the second reference link above. As far as I can tell this > > > is generally happening after the second time I query the api after > > > getting the 302 redirect. Would greatly appreciate it if someone would > > > explain what this error means and how to get around it. I'm including > > > the relevent code from my app below: > > > > > EventController.rb > > > > > event_hash = { :data => { > > > :title => "Tennis with Beth", > > > :details => "Meet for a quick > > > lesson.", > > > :transparency => "opaque", > > > :status => "confirmed", > > > :location => "Rolling Lawn Courts", > > > :when => [ > > > { > > > :start => > > > "2012-04-17T15:00:00.000Z", > > > :end => > > > "2012-04-17T17:00:00.000Z" > > > } > > > ] > > > } > > > } > > > > > event_data = event_hash.to_json > > > > > auth_string = "Bearer " + > > > google_oauth2_credential.access_token > > > header_hash = { 'Content-Type' => 'application/json', > > > 'Authorization' => auth_string, 'GData-Version' => '2' } > > > > > response = post_to_https('https://www.google.com/calendar/ > > > feeds/default/private/full', event_data, header_hash) > > > # note see ApplicationController paste below to see the > > > post_to_https method > > > > > if response.code == '302' > > > uri_string = response.response['Location'] > > > response = post_to_https(uri_string, event_data, > > > header_hash) > > > render :text => "302 " + response.body > > > else > > > render :text => "not 302 " + response.body) > > > end > > > > > ApplicationController.rb > > > > > def post_to_https(url_string, params_hash, header_hash = {}) > > > uri = URI.parse(url_string) > > > http = Net::HTTP.new(uri.host, uri.port) > > > http.use_ssl = true > > > http.verify_mode = OpenSSL::SSL::VERIFY_PEER > > > request = Net::HTTP::Post.new(uri.request_uri) > > > request.set_form_data(params_hash) > > > > > unless header_hash.empty? > > > header_hash.each { |key, value| request[key] = value } > > > end > > > > > return http.request(request) > > > end > > -- > You received this message because you are subscribed to the Google > Groups "Google Calendar Data API" group. > To post to this group, send email to > [email protected] > To unsubscribe from this group, send email to > [email protected] > For more options, visit this group at > http://code.google.com/apis/calendar/community/forum.html > -- Dan Holevoet Google Developer Relations -- You received this message because you are subscribed to the Google Groups "Google Calendar Data API" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://code.google.com/apis/calendar/community/forum.html
