为Flickr身份验证创建签名(Android SDK)

时间:2012-02-28 11:16:52

标签: android oauth flickr signature

我想用我的小型Android-App将图片上传到Flickr。因此用户必须登录并接受权限。

我的问题是,我不知道创建签名的参数是什么。 这是写在Flickr网站上的:

  

基本字符串是通过连接HTTP动词,请求URL和按名称排序的所有请求参数构建的,使用lexicograhpical字节值排序,用'&'分隔。

什么是“请求参数”? 我用不同的参数尝试了几次,但总是得到错误:“无效的api密钥或签名”。

非常感谢你的帮助!

1 个答案:

答案 0 :(得分:6)

让我们分解。

您需要从HTTP动词开始。让我们说你正在做一个GET请求。签名基本字符串的第1部分是:

GET

然后我们假设您正在调用网址http://www.example.com/api/?filename=hello.jpg。忽略参数,你有第2部分:

http://www.example.com/api/

然后我们假设您有以下参数,filename来自上面的网址。服务器允许的请求需要以oauth_为前缀的那些。

  • oauth_consumer_key = 9djdj82h48djs9d2,
  • 组oauth_token = kkk9d7dh3k39sjv7,
  • oauth_signature_method = HMAC-SHA1
  • oauth_timestamp = 137131201
  • oauth_nonce = 7d8f3e4a
  • 文件名= hello.jpg

上述所有参数都需要按字典字节顺序排序(基本上按字母顺序),用'&'分隔。现在你将有第三部分:

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算法对其进行签名,结果签名也必须与请求一起发送。