我想用我的小Android-App将图片上传到Flickr.因此用户必须登录并接受权限.
我的问题是,我不知道创建签名的参数是什么.
这是在Flickr网站上写的:
The base string is constructed by concatenating the HTTP verb, the request URL, and all request parameters sorted by name, using lexicograhpical byte value ordering, separated by an ‘&’.
什么是“请求参数”?
我用不同的参数尝试了几次,但总是得到错误:“无效的api密钥或签名”.
非常感谢你的帮助!
解决方法:
让我们分解吧.
您需要从HTTP动词开始.让我们说你正在做一个GET请求.签名基本字符串的第1部分是:
得到
然后假设您正在调用URL http://www.example.com/api/?filename=hello.jpg.忽略参数,您有第2部分:
http://www.example.com/api/
然后让我们说你有以下参数,文件名来自上面的URL.服务器允许的请求需要以oauth_为前缀的那些.
> oauth_consumer_key = 9djdj82h48djs9d2,
> oauth_token = kkk9d7dh3k39sjv7,
> oauth_signature_method = HMAC-SHA1
> oauth_timestamp = 137131201
> oauth_nonce = 7d8f3e4a
> filename = hello.jpg
上面的所有参数都需要按字典顺序字节顺序排序(基本上按字母顺序),用’&’分隔.现在你将有第三部分:
文件名= 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://www.example.com/api/\u0026amp;文件名= hello.jpg&oauth_consumer_key = 9djdj82h48djs9d2&
oauth_nonce = 7d8f3e4a&oauth_signature_method = HMAC-SHA1&oauth_timestamp =
137131201&组oauth_token = kkk9d7dh3k39sjv7
这是基本字符串.现在您需要使用HMAC-SHA1算法对其进行签名,生成的签名也必须与请求一起发送.