Google Drive API监视400错误Ruby on Rails

我正在使用OAuth2 gem(ruby on rails)实现google驱动器api。 我没有使用客户端库,因为我也在集成其他API,所以我试图将所有这些调用尽可能地模块化。 我遇到了这个请求的问题: POST https://www.googleapis.com/drive/v2/changes/watch 。

我一直收到这个错误:

{"errors"=>[{"domain"=>"global", "reason"=>"required", "message"=>"entity.resource"}], "code"=>400, "message"=>"entity.resource"}: { "error": { "errors": [ { "domain": "global", "reason": "required", "message": "entity.resource" } ], "code": 400, "message": "entity.resource" } } 

这不是很有用。 它可能不是谷歌。 它可能是OAuth2,但我不这么认为,因为调试器在建立连接后会得到响应。 好吧,在这一点上,我什么都不知道,所以任何帮助都表示赞赏。 有这个GUY谁有与我完全相同的错误代码,以及相同的结论。

无论如何,相关的代码部分:

首先,我传递给OAuth2 :: AccessToken的post方法的参数(我需要超过10个rep来发布另一个链接,但这里是dochttp://rdoc.info/github/intridea/oauth2/ebe4be038ec14b349682/OAuth2/AccessToken#post -instance_method)(您可以单击请求方法以查看如何处理参数)

 base_url = request.protocol + request.host_with_port channel_id = (0...50).map { ('a'..'z').to_a[rand(26)] }.join body_post = {:id => channel_id,:type => 'web_hook',:address => base_url + "/googledrive/webhook"} headers = {'Content-Type' => 'application/json'} response = makeApiCall(token,"google_drive","/changes/watch","post",{},body_post,headers) 

所有这一切都建立了我的请求与我的相应的请求正文和呼叫的标题

以下是makeApiCall的相关部分(在令牌token.post处是请求的位置,以及它在哪里中断)

 params = {"oauth_consumer_key" => ENV[key], "access_token" => token.token}.merge(params) #body = Rack::Utils.build_query(body) opts = { :params => params, :body => body, :headers => headers } if(method=="get") response = token.get(base + path,:opts => opts) elsif(method=="post") debugger response = token.post(base + path,:opts => opts) end 

这是我的第一篇或第二篇文章,如果我搞砸了,请原谅我。

好吧,经过这么长时间的挣扎,我想出了为什么它不起作用。 我忘了这样做:

 JSON.generate(body_post) 

所以我的身体实际上是应用/ jsonforms。

另外,这一行:

 response = token.post(base + path,:opts => opts) 

应该是这样的:

 response = token.post(base + path,opts) 

只是因为我没有分配opts键,而是我正在传递的变量。 傻我。

Interesting Posts