腾讯微博的OAuth问题......

2011-07-27 13:43:54 +08:00
 fanzeyi
一直是 「Invalid signature」 错误.. 【用的 oauth 库 http://oauth.googlecode.com/svn/code/python/oauth/oauth.py

然后我就逐行的检查 HMAC 加密的代码.. 发现没有一点问题..

在 腾讯微博开放平台的论坛上也看到有好多人出现这个问题 似乎是和 urlencode 有关 但是具体的也没人给出个正确的解法...

在 Github 上有个 andelf/pyqqweibo 的 repo 我直接给他的 oauth.py 改过来用了 但是还是一样不行..

下面的是 Signature Base String..

GET&https%3A%2F%2Fopen.t.qq.com%2Fcgi-bin%2Frequest_token&oauth_callback%3Dnull%26oauth_consumer_key%3D11dca692584b4cc2835151b3c925ed1d%26oauth_nonce%3D93468450%26oauth_signature_method%3DHMAC-SHA1%26oauth_timestamp%3D1311745309%26oauth_version%3D1.0

密匙部分我记得带 & 号了... 有搞过 腾讯OAuth的嘛 求教!
12305 次点击
所在节点   OAuth
29 条回复
joyqi
2011-07-27 14:08:36 +08:00
我调试过这个接口
open.t.qq.com的接口极为不稳定,可能有10次调用只有一次调用返回正常,其它的都是401,不知道为什么
所以很可能不是你程序的问题
joyqi
2011-07-27 14:14:05 +08:00
哦,你的是Invalid signature错误,那你肯定是带了format=json之类的参数了,但是你在算signature的时候没有把这个参数放进去,一般oauth库都有专门接口可以增加额外参数的
fanzeyi
2011-07-27 14:28:28 +08:00
@joyqi 没带的 除了文档上要求的参数其他什么都没带的。。
zhouyang
2011-07-27 14:46:34 +08:00
这个basestring应该没啥问题,可以看到返还的ret和errcode吗?
fanzeyi
2011-07-27 14:54:18 +08:00
@zhouyang 返回的Content是

'Invalid signature\n'

错误代码是401
joyqi
2011-07-27 14:55:48 +08:00
你把oauth_callback带上值吧,别搞null了。
fanzeyi
2011-07-27 15:01:51 +08:00
@joyqi 改成网址之后问题依旧囧》。
zhouyang
2011-07-27 15:05:59 +08:00
检查一下签名的算法吧
ayanamist
2011-07-27 15:09:40 +08:00
很简单,你把OAuth的结果作为HTTP Header传过去的,这是不行的,你要编码到URL中……
ayanamist
2011-07-27 15:10:08 +08:00
要记得不要再作为Header了,否则一样会无效的。URL或者Header只能选一个
fanzeyi
2011-07-27 15:18:34 +08:00
@ayanamist 是URL传输的.. 如果是 Header传输出现的是 Missing **** 的错误...
fanzeyi
2011-07-27 15:20:59 +08:00
@zhouyang 算法的话 在新浪和饭否的 OAuth 里面都用的是同一个库.. 应该不会有这个问题的..
joyqi
2011-07-27 17:30:47 +08:00
我觉得就是url编码的问题,腾讯不知道用的一套什么诡异的规则
fanzeyi
2011-07-27 17:49:46 +08:00
@joyqi 是啊 但是不知道应该怎么来encode..
zhouyang
2011-07-27 17:56:14 +08:00
还有encode方法?不是准备好了字典直接urlencode就可以了,字典直接里的值直接encode('utf8')
joyqi
2011-07-27 17:59:51 +08:00
http://segmentfault.com/user/login

这里的成功率大概1/5左右,我用的是pecl的oauth库,不知道腾讯在搞什么鬼,其它的应用都妥妥的
fanzeyi
2011-07-27 19:23:49 +08:00
@joyqi 关键我是一次都不成功...
fanzeyi
2011-07-27 19:24:15 +08:00
@zhouyang 不是urlencode问题... 是不知道该在哪里转义哪里不转义... 囧死..
yudun1989
2011-07-27 19:27:39 +08:00
兄弟可以来找我 yudun1989@gmail.com
我刚做了。
fanzeyi
2011-07-27 20:07:55 +08:00
**** 结贴 ****

解决办法:

经 @yudun1989 同学提醒.. 把默认用的 httplib 换成 urllib ... 问题解决... 真奇怪的解决方法...

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

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

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

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

© 2021 V2EX