使用Java将照片上传到flickr时无效签名

时间:2011-07-14 14:21:32

标签: java api upload photo flickr

使用Flickr API - http://www.flickr.com/services/api/ 当我尝试上传照片时,它会显示错误96:无效签名。

这是我的代码:

    String sig = secret + "api_key" + key + "auth_token" + token;
    String signature = FlickrRequestFrob.MD5(sig);

    String request = "http://api.flickr.com/services/upload/";

    HttpClient client = new HttpClient();
    PostMethod postMethod = new PostMethod(request);
    //System.out.println("Api Sig" + signature);
    postMethod.addParameter("api_key",key);
    postMethod.addParameter("api_sig", signature);
    postMethod.addParameter("auth_token", token);
    postMethod.addParameter("is_public", "1");
    postMethod.addParameter("photo", "C:/DSC_0281.JPG");
    postMethod.addParameter("title", "Scary!");

    int status = client.executeMethod(postMethod);
    System.out.println("Status: " + status);

    InputStream responseStream = postMethod.getResponseBodyAsStream();

回复是:

状态:200 回复:

<?xml version="1.0" encoding="utf-8" standalone="no"?><rsp stat="fail">
    <err code="96" msg="Invalid signature"/>
</rsp>

我不知道为什么,有人可以帮助我吗?

1 个答案:

答案 0 :(得分:0)

需要为整个参数列表完成md5签名,而不仅仅是密钥和令牌。

因此,简而言之:创建一个完整的SORTED参数列表(不带'='字符),并对此进行md5哈希。这应该有效。

有关详细信息,请参阅http://www.flickr.com/services/api/auth.spec.html第(8)章。