【发布时间】:2013-12-18 16:52:59
【问题描述】:
试图弄清楚我是否需要在我的标题值中转义字符。如果我将 OAuth 的标头授权发送到服务器资源,就像下面的示例一样:
“PUT /api/v1/articles/6.json HTTP/1.1\r\nAccept: /\r\nUser-Agent: OAuth gem v0.4.5\r\nContent-Length: 9\r\nContent-Type: application/x-www-form-urlencoded\r\nAuthorization: OAuth oauth_consumer_key=\”nMu4u9pLRfDrxhPVK5yn\“, oauth_nonce=\”5346IG1e5bV3ytQwdFqkP8Rgr0VJiA9Xb4FE0\“, oauth_signature=\”64545G%2Byp%2F2BsqJ%2BUUgbjIIIV9E%3D\“, oauth_signature_method=\”HMAC-SHA1\“, oauth_timestamp=\”1330022891\“, oauth_token=\”ivouGxpsJbyIU5viPKOO\“, oauth_version=\”1.0\“\r\nConnection: close\r\nHost: someHostNameHere\r\n\r\n”
现在我将它(我的授权集合的值部分)作为一个大字符串发送给我的授权密钥值:
"OAuth oauth_consumer_key=Mu4u9pLRfDrxhPVK5y, oauth_nonce=5346IG1e5bV3ytQwdFqkP8Rgr0VJiA9Xb4FE0, oauth_signature=64545G%2Byp%2F2BsqJ%2BUUgbjIIIV9E%3D, oauth_signature_method=HMAC-SHA1, oauth_timestamp=1330022891, oauth_token=ivouGxpsJbyIU5viPKOO, oauth_version=1.0"
【问题讨论】:
-
oAuth 有很多open source .Net libraries。你为什么不使用其中之一?
-
这是我自己的代码。您看到的第一个字符串是我从将要使用的 API 获得的示例请求......来自他们的支持人员。所以我不确定这种转义是普遍的还是什么。为什么我不使用开源 OAuth 框架? a)因为我已经自己滚动了,b)因为我不喜欢臃肿或意外的变化,或者必须被推向某个方向,c)你拿到这些东西后,自己滚动并不难。越简单越好,我的是可扩展的,但我不需要一个完整的臃肿框架来为我提供我们在这里需要的基本 OAuth 功能
-
所以回到我的问题。在请求标头中这样的转义字符是否普遍,因为我错过了它们并且应该将它们放在我的中?
-
除非你不使用 TcpClient/Socket,否则你永远不必发送这样的字符串。
-
请详细说明您的技术堆栈是什么,到目前为止似乎是原始套接字。这是c#吗?他们的示例使用表单编码参数。通常,您使用 OAuth 参数添加授权标头,就像您拥有它们一样。