豆瓣API, POST请求时,oauth 放在header Authorization 中,签名是怎么计算的?

2011-12-25 02:42:20 +08:00
 cloud_dai
Authorization: OAuth realm="http://sp.example.com/",
oauth_consumer_key="0685bd9184jfhq22",
oauth_token="ad180jjd733klru7",
oauth_signature_method="HMAC-SHA1",
oauth_signature="wOJIO9A2W5mFwDgiDvZbTSMK%2FPY%3D",
oauth_timestamp="137131200",
oauth_nonce="4572616e48616d6d65724c61686176",
oauth_version="1.0"


豆瓣API真心的难用。。。
6723 次点击
所在节点    问与答
8 条回复
cloud_dai
2011-12-25 10:28:54 +08:00
继续寻求这么解决这问题
AntiGameZ
2011-12-25 11:09:05 +08:00
laiwei
2011-12-25 11:14:20 +08:00
oauth1的签名本身就很复杂,你可以参考豆瓣提供的示例 http://www.douban.com/service/apidoc/auth

不过豆瓣马上就要开放oauth2相关的api授权方式了,会很方便
cloud_dai
2011-12-25 14:56:10 +08:00
@laiwei @AntiGameZ
用GET是没问题的,看了oauth lib里的oauth heaher的逻辑,按照去做还是不能match,
难道在某地方有遗漏。。。
laiwei
2011-12-25 15:33:18 +08:00
@cloud_dai post不行的话,get肯定也不行。你用get请求的时候没出问题应该是因为你请求的是不需要授权的内容。

header中的签名算法比较复杂,你需要用相应的oauth lib去做
cloud_dai
2011-12-25 16:12:51 +08:00
@laiwei 用豆瓣第三方登陆我app成功,url oauth进行的,现在想post一条我说,用header oauth!
你使用豆瓣API的post过信息?
darasion
2011-12-25 19:50:22 +08:00
oauth的话,简单的说,就是先对字符串排序,再把字符串连接,然后给连接好的字符串加密一下,就签了名了。
cloud_dai
2011-12-26 13:41:24 +08:00
找到原因, post时没将 Content-Type 设置为Application/atom+xml; 导致的!
郁闷的是为什么会是401的返回, 签名不匹配!

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/24255

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX