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

Reply via email to