【问题标题】:Sending POST instead of GET request to Google Contacts API (OAuth2)向 Google Contacts API (OAuth2) 发送 POST 而不是 GET 请求
【发布时间】:2012-05-06 20:25:07
【问题描述】:

希望有人可以在这里帮助我。我正在使用 Google Contacts API 来获取联系人列表。据我了解,这是通过发送 GET 请求来完成的:

https://www.google.com/m8/feeds/contacts/default/full?alt=json&max-results=9999&oauth_token=OATH_TOKEN_HERE

但是,这是非常不安全的,因为任何入侵者都可以访问 URL 中的 oauth_token。为了解决这个问题,我尝试将其作为 POST 请求发送,并将我的参数(alt、max-results、oauth_token)作为数据。但是,我只是收到“需要授权”的错误。我尝试将“授权:OAuth”添加到我的标题中,但无济于事(收到无法识别授权类型的错误)。

有什么建议吗?我需要一种安全的方式将 oauth 令牌发送给 Google,这样我的安全软件就不会抱怨我的程序中存在安全漏洞......

谢谢!

【问题讨论】:

  • POST 数据与 GET 数据一样可供入侵者访问。使用 POST 而不是 GET 提供的安全性完全为零。
  • If you use https will your url params will be safe from sniffing? 的可能重复项,其中 HTTPS 流量,QueryString 参数在使用 HTTPS 时被加密,因为您已链接。
  • 我想我要解决的问题是“URL 中的会话令牌”,我的安全套件一直对我大喊大叫。这仅在 GET 请求时弹出,但在 POST 请求时消失。不过,知道如何让 POST 请求用于从 Google 获取联系人吗?

标签: oauth-2.0 google-contacts-api


【解决方案1】:

要直接回答您的问题,即使您使用HTTPS 与安全性无关,您也无法通过POST 向Google 获取联系人列表。 Google requires you use Get.

授权的正确格式(因为您仍然可以使用Get 并且不将 oauth_token 作为查询字符串传递是使用格式化的 HTTP 标头:

授权:承载 1/fFBGRNJru1FQd44AzqT3Zg

Using OAuth 2.0 to Access Google APIs

【讨论】:

  • 啊,我想这个没办法了。谢谢!
  • 哦,是的,我理解那部分! (再次感谢!)我的意思是没有办法绕过这个企业软件抱怨这里的安全性。 :P