下载了https://github.com/qiniu/ruby-sdk 。然后建了个bucket,并在sdk里面配置了ak和sk,跑了下测试用例,一直是报401错误,仔细检查了下ak和sk,完全没错误。请问如何解决。
[401, {}, {"server"=>["nginx/1.4.4"], "date"=>["Mon, 23 Mar 2015 03:14:05 GMT"], "content-type"=>["application/json"], "content-length"=>["0"], "connection"=>["close"], "x-log"=>["RS/401"], "x-reqid"=>["6XsAAPI4TrkaAs4T"]}]
W, [2015-03-23T11:13:07.938443 #8329] WARN -- : 401 Unauthorized => Qiniu::HTTP.post('http://up.qiniu.com/')
FW, [2015-03-23T11:13:09.769461 #8329] WARN -- : 401 Unauthorized => Qiniu::HTTP.post('http://rs.qiniu.com/buckets')
上传报 401 可以按照以下步骤排除问题
401 认证授权失败,可能是密钥信息不正确、数字签名错误或授权已超时。
http://testpublic.qiniudn.com/decodeToken (mac 版本)
例如 token是7sEgop7h-Njukh-TvvbveCQ4wrLEYXSW7LAIAS9x:He7bM2DenPZFHHqwElkviJhMI14=:eyJzY29wZSI6InRlc3RwdWJsaWMiLCJkZWFkbGluZSI6MTQyNjc0OTg4M30=
是AccessKey、encodedSign和encodedPutPolicy用:连接起来组成的
然后解开一下看看有没有什么问题,
../../GoTest/decodeToken eyJzY29wZSI6InRlc3RwdWJsaWMiLCJkZWFkbGluZSI6MTQyNjc0OTg4M30=
ctx:
{"scope":"testpublic","deadline":1426749883}
authPolicy info:
Scope: testpublic
CallbackUrl:
CallbackBodyType:
CallbackBody:
Customer:
Deadline: 1426749883
ReturnBody:
PersistentOps:
PersistentNotifyUrl:
下面命令可以解一下unix时间戳
date -r 1426749883
2015年 3月19日 星期四 15时24分43秒 CST
这样就可以检查一次token是否格式不对,也可以看一下时间是否过期,
如果都很正常,就可以使用下面的小工具看看 encodesign 对不对
http://testpublic.qiniudn.com/hmac (mac 版本)
./hmac eyJzY29wZSI6InRlc3RwdWJsaWMiLCJkZWFkbGluZSI6MTQyNjc0OTg4M30= Nuw3OjxghrJzRo_9A4b05ynxHRYq15mg9fxRvGtB
2015/03/19 14:30:26 He7bM2DenPZFHHqwElkviJhMI14=
可以检查 encodesign 是否一致
如果都很正常就可以使用命令上传一下
curl -v -F 'key=1111' -F 'token='' -F 'file=@/Users/qn/qbox/devtools/bin/httpServer' upload.qiniu.com
看一下使用命令是否会报 401