Problem in upload image on twitter using blackberry


#1

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;
}

#2

One thing that’s a little strange here is that you’re conflating the xAuth process with the act of uploading an image. You should really keep the aspect of requesting the user to authorize separate from actually using the API.