我想用我的小型Android-App将图片上传到Flickr。因此用户必须登录并接受权限。
我的问题是,我不知道创建签名的参数是什么。 这是写在Flickr网站上的:
基本字符串是通过连接HTTP动词,请求URL和按名称排序的所有请求参数构建的,使用lexicograhpical字节值排序,用'&'分隔。
什么是“请求参数”? 我用不同的参数尝试了几次,但总是得到错误:“无效的api密钥或签名”。
非常感谢你的帮助!
答案 0 :(得分:6)
让我们分解。
您需要从HTTP动词开始。让我们说你正在做一个GET请求。签名基本字符串的第1部分是:
GET
然后我们假设您正在调用网址http://www.example.com/api/?filename=hello.jpg。忽略参数,你有第2部分:
http://www.example.com/api/
然后我们假设您有以下参数,filename
来自上面的网址。服务器允许的请求需要以oauth_
为前缀的那些。
上述所有参数都需要按字典字节顺序排序(基本上按字母顺序),用'&'分隔。现在你将有第三部分:
filename=hello.jpg&oauth_consumer_key=9djdj82h48djs9d2&
oauth_nonce=7d8f3e4a&oauth_signature_method=HMAC-SHA1&oauth_timestamp=
137131201&oauth_token=kkk9d7dh3k39sjv7
现在你需要对第2部分和第3部分进行URL编码。然后连接这三部分,结果是:
GET&http%3A%2F%2Fwww.example.com%2Fapi%2F&filename%3Dhello.jpg%26oauth_consumer_key%3D9djdj82h48djs9d2%26%0Aoauth_nonce%3D7d8f3e4a%26oauth_signature_method%3DHMAC-SHA1%26oauth_timestamp%3D%0A137131201%26oauth_token%3Dkkk9d7dh3k39sjv7
这是基本字符串。现在您需要使用HMAC-SHA1算法对其进行签名,结果签名也必须与请求一起发送。