[来自OAuth Ruby Google组的Cross帖子如果你帮不了我,别担心]
我正在整合一个TripIt's OAuth API的项目
我遇到了一个奇怪的问题。
我可以验证,我存储并检索给定的令牌/密钥
用户没有问题,我甚至可以向
使用gem的服务。但是当我尝试使用我需要的服务时
我收到了401“无效签名”的回复。
也许我不理解如何将数据传递到accesstoken的
post方法,下面是我的代码示例:
xml = <<-XML
<Request>
<Trip>
<start_date>2008-12-09</start_date>
<end_date>2008-12-27</end_date>
<primary_location>New York, NY</primary_location>
</Trip>
</Request>
XML`
response = access_token.post('/v1/create', {:xml => xml},
{'Content-Type' => 'application/x-www-form-urlencoded'})
我已经尝试过这个方法,但没有事先转义xml字符串。
TripIt的人似乎认为XML参数可能不是
包含在签名基字符串中,但是当我输出
(来自lib/signature/base.rb)我看到:
发布https%3A%2F%2Fapi.tripit.com%2Fv1%2Fcreate&oauth\u使用者密钥
%3D%26o当前
%3Djs73Y9caeuffpmPVc6lqxhlFN3Qpj7OhLcfBTYv8Ww%26oauth_signature_方法
%3DHMAC-SHA1%26oauth_时间戳%3D1252011612%26oauth_令牌
%3D%26oauth_版本%3D1.0%26xml%3D%25253CRequest%25253E
%25250A%252520%252520%25253携程%25253E%25250A
%252520%252520%252520%252520%25253C开始日期%25253E2008-12-09%25253C
%252F开始日期%25253E%25250A
%252520%252520%252520%252520%25252%25253中心日期%25253E2008-12-27%25253C
%252Fend_日期%25253E%25250A
%252520%252520%252520%252520%252520%25253C主要位置%25253E新
%252520York%252C%252520NY%25253C%252F主要位置%25253E%25250A
%252520%252520%25253C%252FTrip%25253E%25250A%25253C%252FRequest%25253E
%25250A
这对我来说似乎是正确的。
我输出签名(来自同一个文件)与输出不匹配
lib/client中auth头的oauth_signature参数/
网络http.rb。它被url编码在auth头中。这是吗
对的?
有人知道宝石是不是坏了/有没有什么地方修理过我发现有些代码很难追踪。
最佳答案
您的OAuth_令牌为空。不熟悉协议,可以吗?
一旦您包含正确的令牌,请记住在签名中使用令牌秘密。
关于ruby - 使用Ruby OAuth Gem将XML发布到OAuth和签名无效的问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1381010/