Hi Dan, Very nice meeting you as well. Thank you for helping me with this. I will follow up once I've had a chance to inspect the http request body closely. I'm also going to try to upgrade from Ruby 1.8.7 to 1.9.3 in case there were an patches to the net/http library to see if that fixes it. Toshiro On Nov 8, 2:15 pm, Dan Holevoet <[email protected]> wrote: > 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
