Hi Sir ,
I have some problem when uploading image on twitter .
i am able to update status successfully but when uploading image it give error “Bad Authentication data”.
i am trying like this
public static void postImage(Token token) {
Hashtable params = new Hashtable();
params.put(“status”, “Hello How r u?”);
try {
InputStream ios = Utilities.class.getResourceAsStream("/videotalkies_68.png");
byte[] fileBytes = getUrlEncodeData(IOUtilities.streamToBytes(ios));
Credential credential = new Credential(Constant.CONSUMER_KEY, Constant.CONSUMER_SECRET, token);
UserAccountManager m = UserAccountManager.getInstance(credential);
if (m.verifyCredential()) {
XAuthSigner oAuthSigner = new XAuthSigner(Constant.CONSUMER_KEY, Constant.CONSUMER_SECRET);
Hashtable headers =getHeaderssignForAccessToken(credential.getUsernameOrEmail(), credential.getString(MetadataSet.CREDENTIAL_PASSWORD));
byte[] bs = new HttpMultipartRequest("https://api.twitter.com/1.1/statuses/update_with_media.json", params, "media[]", "videotalkies_68.png", "application/octet-stream", fileBytes, headers).send();
System.out.println("Utilities.postImage()==out====\n" + new String(bs));
}
} catch (Exception e) {
System.out.println("Utilities.postImage()Error=========" + e.getMessage() + '\t' + e.getClass().getName());
}
}
private static byte[] getUrlEncodeData(byte[] streamToBytes) {
String data = URLUTF8Encoder.encode(new String(streamToBytes));
return data.getBytes();
}
public Hashtable getHeaderssignForAccessToken(String username, String password) {
Hashtable headers = new Hashtable();
headers.put(OAuthConstants.MODE, "client_auth");
headers.put(OAuthConstants.USERNAME, username);
headers.put(OAuthConstants.PASSWORD, password);
//
OAuthParameters params = new OAuthParameters(consumerKey);
//
// String str = getSignatureBaseString(req, params);
//
String str = getSignature("", consumerSecret, OAuthConstants.EMPTY_TOKEN_SECRET);
params.put(OAuthConstants.SIGNATURE, str);
//
str = params.getAuthorizationHeaderValue();
headers.put(OAuthConstants.HEADER, str);
return headers;
}