0

你好善良的互联网人,

我们可以成功地使用 Google Oauth 2.0 Playground 对 FusionTable 进行简单的 sql POST 插入,但是当尝试在其他任何东西(来自后端系统、另一个浏览器会话、Postman chrome 工具、hurl.it、等等),我们总是得到一个 403 错误:

 "message": "Daily Limit for Unauthenticated Use Exceeded. Continued use requires signup.",

我很困惑为什么在从其他系统(OAuth 游乐场除外)进行 HTTPS 发布时返回错误?...当时我正在提供活动的访问令牌(来自 OAuth 游乐场的剪切粘贴访问令牌)。

OAuth 2.0 Playground 中的成功运行良好的请求块如下(但访问令牌当然现在已过期):

 POST /fusiontables/v1/query?sql=INSERT INTO 1CqwRGEEn4L0gN66JwGvCR5yOI8miNMVijcp4XlE (Name, Age) VALUES ('Forrest', 57) HTTP/1.1
 Host: www.googleapis.com
 Content-type: application/json
 Authorization: Bearer ya29.AHES6ZRr9CkHptvLaYlba_u6wceIh29urI8FjFp8xMP08AcBm2qpHg

这是由几个不同的基于 REST 的工具生成的直接 URL,我试图用来模拟 HTTPS 请求以向 FusionTables 执行 POST sql 插入(同样:即使使用活动的访问令牌,也总是会生成 403 错误):

 https://www.googleapis.com/fusiontables/v1/query?sql=INSERT%20INTO%201CqwRGEEn4L0gN66JwGvCR5yOI8miNMVijcp4XlE%20(Name,%20Age)%20VALUES%20('Jim',%2057)=&Content-length:=0&Content-type:%20=application/json&Authorization:=%20Bearer%20ya29.AHES6ZRr9CkHptvLaYlba_u6wceIh29urI8FjFp8xMP08AcBm2qpHg

其他一些注意事项: -在我的 Google API 控制台中,我使用的是“Web 应用程序的客户端 ID”。

-我使用 Api 控制台电子邮件地址更新了 FusionTable 属性,以允许在上述 sql (1CqwRGEEn4L0gN66JwGvCR5yOI8miNMVijcp4XlE) 中使用的 fusiont 表上具有编辑功能在 FusionTables 上发布)。

任何帮助解释为什么 HTTPS Post 在 OAuth 操场上用于向 FusionTables 插入 sql 的原因,但在其他任何地方都不会受到赞赏......肯定有我遗漏的东西,因为据说 OAuth 操场是为了帮助阐明 OAuth 的方式在详细级别上工作,因此我们可以在不一定具有已开发 OAuth 库的其他系统中进行处理。

更新 8/23,根据建议的答案...这是一个在 POSTMAN 中工作的 URL 语法,它同时使用 OAuth API 密钥和使用 OAuth 游乐场获得的活动访问令牌(访问令牌当然是假的/过期的)。

  https://www.googleapis.com/fusiontables/v1/query?sql=INSERT%20INTO%201CqwRGEEn4L0gN66JwGvCR5yOI8miNMVijcp4XlE%20(Name,%20Age)%20VALUES%20('Bob',%2031)=&Content-length:=0&Content-type:%20=application/json&key={OAuth API key}&access_token=ya29.AHES6ZST_c2CjdXeIyG8LwkprQMGGfoW45sonX0d1H51234
4

1 回答 1

1

尝试将您的 API 密钥添加到 POST。尽管该消息涉及身份验证,但我很确定这不是 OAuth 身份验证,而是需要验证您的 API 使用情况。

于 2013-08-22T21:43:08.880 回答