use of twitter4j.auth.AccessToken in project Talon-for-Twitter by klinker24.
the class TwitterDMPicHelper method getDMPicture.
public Bitmap getDMPicture(String picUrl, Twitter twitter) {
try {
AccessToken token = twitter.getOAuthAccessToken();
String oauth_token = token.getToken();
String oauth_token_secret = token.getTokenSecret();
// generate authorization header
String get_or_post = "GET";
String oauth_signature_method = "HMAC-SHA1";
String uuid_string = UUID.randomUUID().toString();
uuid_string = uuid_string.replaceAll("-", "");
// any relatively random alphanumeric string will work here
String oauth_nonce = uuid_string;
// get the timestamp
Calendar tempcal = Calendar.getInstance();
// get current time in milliseconds
long ts = tempcal.getTimeInMillis();
// then divide by 1000 to get seconds
String oauth_timestamp = (new Long(ts / 1000)).toString();
// the parameter string must be in alphabetical order, "text" parameter added at end
String parameter_string = "oauth_consumer_key=" + AppSettings.TWITTER_CONSUMER_KEY + "&oauth_nonce=" + oauth_nonce + "&oauth_signature_method=" + oauth_signature_method + "&oauth_timestamp=" + oauth_timestamp + "&oauth_token=" + encode(oauth_token) + "&oauth_version=1.0";
String twitter_endpoint = picUrl;
String twitter_endpoint_host = picUrl.substring(0, picUrl.indexOf("1.1")).replace("https://", "").replace("/", "");
String twitter_endpoint_path = picUrl.replace("ton.twitter.com", "").replace("https://", "");
String signature_base_string = get_or_post + "&" + encode(twitter_endpoint) + "&" + encode(parameter_string);
String oauth_signature = computeSignature(signature_base_string, AppSettings.TWITTER_CONSUMER_SECRET + "&" + encode(oauth_token_secret));
Log.v("talon_dm_image", "endpoint_host: " + twitter_endpoint_host);
Log.v("talon_dm_image", "endpoint_path: " + twitter_endpoint_path);
String authorization_header_string = "OAuth oauth_consumer_key=\"" + AppSettings.TWITTER_CONSUMER_KEY + "\",oauth_signature_method=\"HMAC-SHA1\",oauth_timestamp=\"" + oauth_timestamp + "\",oauth_nonce=\"" + oauth_nonce + "\",oauth_version=\"1.0\",oauth_signature=\"" + encode(oauth_signature) + "\",oauth_token=\"" + encode(oauth_token) + "\"";
HttpParams params = new BasicHttpParams();
HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1);
HttpProtocolParams.setContentCharset(params, "UTF-8");
HttpProtocolParams.setUserAgent(params, "HttpCore/1.1");
HttpProtocolParams.setUseExpectContinue(params, false);
HttpProcessor httpproc = new ImmutableHttpProcessor(new HttpRequestInterceptor[] { // Required protocol interceptors
new RequestContent(), new RequestTargetHost(), // Recommended protocol interceptors
new RequestConnControl(), new RequestUserAgent(), new RequestExpectContinue() });
HttpRequestExecutor httpexecutor = new HttpRequestExecutor();
HttpContext context = new BasicHttpContext(null);
HttpHost host = new HttpHost(twitter_endpoint_host, 443);
DefaultHttpClientConnection conn = new DefaultHttpClientConnection();
context.setAttribute(ExecutionContext.HTTP_CONNECTION, conn);
context.setAttribute(ExecutionContext.HTTP_TARGET_HOST, host);
SSLContext sslcontext = SSLContext.getInstance("TLS");
sslcontext.init(null, null, null);
SSLSocketFactory ssf = sslcontext.getSocketFactory();
Socket socket = ssf.createSocket();
socket.connect(new InetSocketAddress(host.getHostName(), host.getPort()), 0);
conn.bind(socket, params);
BasicHttpEntityEnclosingRequest request2 = new BasicHttpEntityEnclosingRequest("GET", twitter_endpoint_path);
request2.setParams(params);
request2.addHeader("Authorization", authorization_header_string);
httpexecutor.preProcess(request2, httpproc, context);
HttpResponse response2 = httpexecutor.execute(request2, conn, context);
response2.setParams(params);
httpexecutor.postProcess(response2, httpproc, context);
StatusLine statusLine = response2.getStatusLine();
int statusCode = statusLine.getStatusCode();
if (statusCode == 200 || statusCode == 302) {
HttpEntity entity = response2.getEntity();
byte[] bytes = EntityUtils.toByteArray(entity);
Bitmap bitmap = BitmapFactory.decodeByteArray(bytes, 0, bytes.length);
return bitmap;
} else {
Log.v("talon_dm_image", statusCode + "");
}
conn.close();
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
use of twitter4j.auth.AccessToken in project Talon-for-Twitter by klinker24.
the class TwitterMultipleImageHelper method getImageURLs.
public ArrayList<String> getImageURLs(Status status, Twitter twitter) {
ArrayList<String> images = TweetLinkUtils.getAllExternalPictures(status);
try {
AccessToken token = twitter.getOAuthAccessToken();
String oauth_token = token.getToken();
String oauth_token_secret = token.getTokenSecret();
// generate authorization header
String get_or_post = "GET";
String oauth_signature_method = "HMAC-SHA1";
String uuid_string = UUID.randomUUID().toString();
uuid_string = uuid_string.replaceAll("-", "");
// any relatively random alphanumeric string will work here
String oauth_nonce = uuid_string;
// get the timestamp
Calendar tempcal = Calendar.getInstance();
// get current time in milliseconds
long ts = tempcal.getTimeInMillis();
// then divide by 1000 to get seconds
String oauth_timestamp = (new Long(ts / 1000)).toString();
// the parameter string must be in alphabetical order, "text" parameter added at end
String parameter_string = "oauth_consumer_key=" + AppSettings.TWITTER_CONSUMER_KEY + "&oauth_nonce=" + oauth_nonce + "&oauth_signature_method=" + oauth_signature_method + "&oauth_timestamp=" + oauth_timestamp + "&oauth_token=" + encode(oauth_token) + "&oauth_version=1.0";
String twitter_endpoint = "https://api.twitter.com/1.1/statuses/show/" + status.getId() + ".json";
String twitter_endpoint_host = "api.twitter.com";
String twitter_endpoint_path = "/1.1/statuses/show/" + status.getId() + ".json";
String signature_base_string = get_or_post + "&" + encode(twitter_endpoint) + "&" + encode(parameter_string);
String oauth_signature = computeSignature(signature_base_string, AppSettings.TWITTER_CONSUMER_SECRET + "&" + encode(oauth_token_secret));
String authorization_header_string = "OAuth oauth_consumer_key=\"" + AppSettings.TWITTER_CONSUMER_KEY + "\",oauth_signature_method=\"HMAC-SHA1\",oauth_timestamp=\"" + oauth_timestamp + "\",oauth_nonce=\"" + oauth_nonce + "\",oauth_version=\"1.0\",oauth_signature=\"" + encode(oauth_signature) + "\",oauth_token=\"" + encode(oauth_token) + "\"";
HttpParams params = new BasicHttpParams();
HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1);
HttpProtocolParams.setContentCharset(params, "UTF-8");
HttpProtocolParams.setUserAgent(params, "HttpCore/1.1");
HttpProtocolParams.setUseExpectContinue(params, false);
HttpProcessor httpproc = new ImmutableHttpProcessor(new HttpRequestInterceptor[] { // Required protocol interceptors
new RequestContent(), new RequestTargetHost(), // Recommended protocol interceptors
new RequestConnControl(), new RequestUserAgent(), new RequestExpectContinue() });
HttpRequestExecutor httpexecutor = new HttpRequestExecutor();
HttpContext context = new BasicHttpContext(null);
HttpHost host = new HttpHost(twitter_endpoint_host, 443);
DefaultHttpClientConnection conn = new DefaultHttpClientConnection();
context.setAttribute(ExecutionContext.HTTP_CONNECTION, conn);
context.setAttribute(ExecutionContext.HTTP_TARGET_HOST, host);
SSLContext sslcontext = SSLContext.getInstance("TLS");
sslcontext.init(null, null, null);
SSLSocketFactory ssf = sslcontext.getSocketFactory();
Socket socket = ssf.createSocket();
socket.connect(new InetSocketAddress(host.getHostName(), host.getPort()), 0);
conn.bind(socket, params);
BasicHttpEntityEnclosingRequest request2 = new BasicHttpEntityEnclosingRequest("GET", twitter_endpoint_path);
request2.setParams(params);
request2.addHeader("Authorization", authorization_header_string);
httpexecutor.preProcess(request2, httpproc, context);
HttpResponse response2 = httpexecutor.execute(request2, conn, context);
response2.setParams(params);
httpexecutor.postProcess(response2, httpproc, context);
String responseBody = EntityUtils.toString(response2.getEntity());
conn.close();
JSONObject fullJson = new JSONObject(responseBody);
JSONObject extendedEntities = fullJson.getJSONObject("extended_entities");
JSONArray media = extendedEntities.getJSONArray("media");
Log.v("talon_images", media.toString());
for (int i = 0; i < media.length(); i++) {
JSONObject entity = media.getJSONObject(i);
try {
// parse through the objects and get the media_url
String url = entity.getString("media_url");
String type = entity.getString("type");
// this also checks to confirm that the entity is in fact a photo
if (!images.contains(url) && type.equals("photo")) {
images.add(url);
}
} catch (Exception e) {
}
}
} catch (Exception e) {
e.printStackTrace();
}
return images;
}
use of twitter4j.auth.AccessToken in project Talon-for-Twitter by klinker24.
the class TwitterMultipleImageHelper method getMediaIds.
public String getMediaIds(File[] pics, Twitter twitter) {
JSONObject jsonresponse = new JSONObject();
String ids = "";
for (int i = 0; i < pics.length; i++) {
File file = pics[i];
try {
AccessToken token = twitter.getOAuthAccessToken();
String oauth_token = token.getToken();
String oauth_token_secret = token.getTokenSecret();
// generate authorization header
String get_or_post = "POST";
String oauth_signature_method = "HMAC-SHA1";
String uuid_string = UUID.randomUUID().toString();
uuid_string = uuid_string.replaceAll("-", "");
// any relatively random alphanumeric string will work here
String oauth_nonce = uuid_string;
// get the timestamp
Calendar tempcal = Calendar.getInstance();
// get current time in milliseconds
long ts = tempcal.getTimeInMillis();
// then divide by 1000 to get seconds
String oauth_timestamp = (new Long(ts / 1000)).toString();
// the parameter string must be in alphabetical order, "text" parameter added at end
String parameter_string = "oauth_consumer_key=" + AppSettings.TWITTER_CONSUMER_KEY + "&oauth_nonce=" + oauth_nonce + "&oauth_signature_method=" + oauth_signature_method + "&oauth_timestamp=" + oauth_timestamp + "&oauth_token=" + encode(oauth_token) + "&oauth_version=1.0";
System.out.println("Twitter.updateStatusWithMedia(): parameter_string=" + parameter_string);
String twitter_endpoint = "https://upload.twitter.com/1.1/media/upload.json";
String twitter_endpoint_host = "upload.twitter.com";
String twitter_endpoint_path = "/1.1/media/upload.json";
String signature_base_string = get_or_post + "&" + encode(twitter_endpoint) + "&" + encode(parameter_string);
String oauth_signature = computeSignature(signature_base_string, AppSettings.TWITTER_CONSUMER_SECRET + "&" + encode(oauth_token_secret));
String authorization_header_string = "OAuth oauth_consumer_key=\"" + AppSettings.TWITTER_CONSUMER_KEY + "\",oauth_signature_method=\"HMAC-SHA1\",oauth_timestamp=\"" + oauth_timestamp + "\",oauth_nonce=\"" + oauth_nonce + "\",oauth_version=\"1.0\",oauth_signature=\"" + encode(oauth_signature) + "\",oauth_token=\"" + encode(oauth_token) + "\"";
HttpParams params = new BasicHttpParams();
HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1);
HttpProtocolParams.setContentCharset(params, "UTF-8");
HttpProtocolParams.setUserAgent(params, "HttpCore/1.1");
HttpProtocolParams.setUseExpectContinue(params, false);
HttpProcessor httpproc = new ImmutableHttpProcessor(new HttpRequestInterceptor[] { // Required protocol interceptors
new RequestContent(), new RequestTargetHost(), // Recommended protocol interceptors
new RequestConnControl(), new RequestUserAgent(), new RequestExpectContinue() });
HttpRequestExecutor httpexecutor = new HttpRequestExecutor();
HttpContext context = new BasicHttpContext(null);
HttpHost host = new HttpHost(twitter_endpoint_host, 443);
DefaultHttpClientConnection conn = new DefaultHttpClientConnection();
context.setAttribute(ExecutionContext.HTTP_CONNECTION, conn);
context.setAttribute(ExecutionContext.HTTP_TARGET_HOST, host);
try {
try {
SSLContext sslcontext = SSLContext.getInstance("TLS");
sslcontext.init(null, null, null);
SSLSocketFactory ssf = sslcontext.getSocketFactory();
Socket socket = ssf.createSocket();
socket.connect(new InetSocketAddress(host.getHostName(), host.getPort()), 0);
conn.bind(socket, params);
BasicHttpEntityEnclosingRequest request2 = new BasicHttpEntityEnclosingRequest("POST", twitter_endpoint_path);
// need to add status parameter to this POST
MultipartEntity reqEntity = new MultipartEntity();
FileBody sb_image = new FileBody(file);
reqEntity.addPart("media", sb_image);
request2.setEntity(reqEntity);
request2.setParams(params);
request2.addHeader("Authorization", authorization_header_string);
System.out.println("Twitter.updateStatusWithMedia(): Entity, params and header added to request. Preprocessing and executing...");
httpexecutor.preProcess(request2, httpproc, context);
HttpResponse response2 = httpexecutor.execute(request2, conn, context);
System.out.println("Twitter.updateStatusWithMedia(): ... done. Postprocessing...");
response2.setParams(params);
httpexecutor.postProcess(response2, httpproc, context);
String responseBody = EntityUtils.toString(response2.getEntity());
System.out.println("Twitter.updateStatusWithMedia(): done. response=" + responseBody);
// error checking here. Otherwise, status should be updated.
jsonresponse = new JSONObject(responseBody);
if (jsonresponse.has("errors")) {
JSONObject temp_jo = new JSONObject();
temp_jo.put("response_status", "error");
temp_jo.put("message", jsonresponse.getJSONArray("errors").getJSONObject(0).getString("message"));
temp_jo.put("twitter_code", jsonresponse.getJSONArray("errors").getJSONObject(0).getInt("code"));
jsonresponse = temp_jo;
}
// add it to the media_ids string
ids += jsonresponse.getString("media_id_string");
if (i != pics.length - 1) {
ids += ",";
}
conn.close();
} catch (HttpException he) {
System.out.println(he.getMessage());
jsonresponse.put("response_status", "error");
jsonresponse.put("message", "updateStatusWithMedia HttpException message=" + he.getMessage());
return null;
} catch (NoSuchAlgorithmException nsae) {
System.out.println(nsae.getMessage());
jsonresponse.put("response_status", "error");
jsonresponse.put("message", "updateStatusWithMedia NoSuchAlgorithmException message=" + nsae.getMessage());
return null;
} catch (KeyManagementException kme) {
System.out.println(kme.getMessage());
jsonresponse.put("response_status", "error");
jsonresponse.put("message", "updateStatusWithMedia KeyManagementException message=" + kme.getMessage());
return null;
} finally {
conn.close();
}
} catch (IOException ioe) {
ioe.printStackTrace();
jsonresponse.put("response_status", "error");
jsonresponse.put("message", "updateStatusWithMedia IOException message=" + ioe.getMessage());
return null;
}
} catch (Exception e) {
return null;
}
}
return ids;
}
use of twitter4j.auth.AccessToken in project openhab1-addons by openhab.
the class TwitterActionService method getAccessToken.
private static AccessToken getAccessToken() {
try {
String accessToken = loadToken(getTokenFile(), "accesstoken");
String accessTokenSecret = loadToken(getTokenFile(), "accesstokensecret");
if (StringUtils.isEmpty(accessToken) || StringUtils.isEmpty(accessTokenSecret)) {
File pinFile = new File("twitter.pin");
RequestToken requestToken = Twitter.client.getOAuthRequestToken();
// no access token/secret specified so display the authorisation URL in the log
logger.info("################################################################################################");
logger.info("# Twitter-Integration: U S E R I N T E R A C T I O N R E Q U I R E D !!");
logger.info("# 1. Open URL '{}'", requestToken.getAuthorizationURL());
logger.info("# 2. Grant openHAB access to your Twitter account");
logger.info("# 3. Create an empty file 'twitter.pin' in your openHAB home directory at " + pinFile.getAbsolutePath());
logger.info("# 4. Add the line 'pin=<authpin>' to the twitter.pin file");
logger.info("# 5. openHAB will automatically detect the file and complete the authentication process");
logger.info("# NOTE: You will only have 5 mins before openHAB gives up waiting for the pin!!!");
logger.info("################################################################################################");
String authPin = null;
int interval = 5000;
int waitedFor = 0;
while (StringUtils.isEmpty(authPin)) {
try {
Thread.sleep(interval);
waitedFor += interval;
// attempt to read the authentication pin from them temp file
} catch (InterruptedException e) {
// ignore
}
authPin = loadToken(pinFile, "pin");
// if we already waited for more than five minutes then stop
if (waitedFor > 300000) {
logger.info("Took too long to enter your Twitter authorisation pin! Please use OSGi " + "console to restart the org.openhab.io.net-Bundle and re-initiate the authorization process!");
break;
}
}
// if no pin was detected after 5 mins then we can't continue
if (StringUtils.isEmpty(authPin)) {
logger.warn("Timed out waiting for the Twitter authorisation pin.");
return null;
}
// attempt to get an access token using the user-entered pin
AccessToken token = Twitter.client.getOAuthAccessToken(requestToken, authPin);
accessToken = token.getToken();
accessTokenSecret = token.getTokenSecret();
// save the access token details
saveToken(getTokenFile(), "accesstoken", accessToken);
saveToken(getTokenFile(), "accesstokensecret", accessTokenSecret);
}
// generate an access token from the token details
return new AccessToken(accessToken, accessTokenSecret);
} catch (Exception e) {
logger.error("Failed to authenticate openHAB against Twitter", e);
return null;
}
}
use of twitter4j.auth.AccessToken in project mobile-android by photo.
the class TwitterUtils method getAccessToken.
/**
* This method checks the shared prefs to see if we have persisted a user
* token/secret if it has then it logs on using them, otherwise return null
*
* @param context
* @return AccessToken from persisted prefs
*/
static AccessToken getAccessToken(Context context) {
SharedPreferences settings = Preferences.getSharedPreferences(PREFS_NAME);
String token = settings.getString(ACCESS_TOKEN_TOKEN, "");
String tokenSecret = settings.getString(ACCESS_TOKEN_SECRET, "");
if (token != null && tokenSecret != null && !"".equals(tokenSecret) && !"".equals(token)) {
return new AccessToken(token, tokenSecret);
}
return null;
}
Aggregations