2013-08-06 30 views
0

我是flickr API的新手。我在那裏獲取創建簽名以獲取請求令牌的代碼。但我無法爲訪問令牌創建它。總是說簽名是無效的。在flickr中創建oauth_signture以獲取訪問令牌

我使用創建簽名的代碼是

private static String getreqSignature(String url, String params) 
      throws UnsupportedEncodingException, NoSuchAlgorithmException, 
      InvalidKeyException { 
    StringBuilder base = new StringBuilder(); 
      base.append("GET&"); 
      base.append(url); 
      base.append("&"); 
      base.append(params); 
      System.out.println("Stirng for oauth_signature generation:" + base); 
      // yea, don't ask me why, it is needed to append a "&" to the end of 
      // secret key. 
      byte[] keyBytes = (ApplicationContext.getFLICKR_API_SECRET() + "&") 
        .getBytes(ENC); 

      SecretKey key = new SecretKeySpec(keyBytes, HMAC_SHA1); 

      Mac mac = Mac.getInstance(HMAC_SHA1); 
      mac.init(key); 
      System.out.println(new String(base64.encode(mac.doFinal(base.toString() 
        .getBytes(ENC))), ENC)); 
      // encode it, base64 it, change it to string and return. 
      return new String(base64.encode(mac.doFinal(base.toString().getBytes(
        ENC))), ENC).trim(); 

} 

我的查詢參數

qparams.add(new BasicNameValuePair("oauth_consumer_key","******")); 
    qparams.add(new BasicNameValuePair("oauth_nonce", ""+ (int) (Math.random()               * 100000000))); 
    qparams.add(new BasicNameValuePair("oauth_signature_method","HMAC-SHA1")); 
    qparams.add(new BasicNameValuePair("oauth_timestamp", ""+ (System.currentTimeMillis()/1000))); 
    qparams.add(new BasicNameValuePair("oauth_version", "1.0")); 

    // generate the oauth_signature 
    String signature = getreqSignature(URLEncoder.encode(
      "http://www.flickr.com/services/oauth/request_token", ENC), 
      URLEncoder.encode(URLEncodedUtils.format(qparams, ENC), ENC)); 



    // qparams.add(new BasicNameValuePair("oauth_verifier", verifier)); 
    qparams.add(new BasicNameValuePair("oauth_signature", signature)); 

    URI uri = URIUtils.createURI("http", "www.flickr.com", -1, 
      "/services/oauth/request_token", 
      URLEncodedUtils.format(qparams, ENC), null); 

如何創建簽名以訪問token.What在上面的代碼更改。

回答

0

終於我用Scribe庫得到我的details.Its工作正常。