package com.oreilly.android.otweet; import com.oreilly.android.otweet.authorization.SettingsHelper; import twitter4j.Twitter; import twitter4j.TwitterException; import twitter4j.TwitterFactory; import twitter4j.http.AccessToken; import twitter4j.http.RequestToken; import android.app.Application; public class OTweetApplication extends Application { private Twitter twitter; private RequestToken currentRequestToken; private SettingsHelper settingsHelper; private String username; private String password; @Override public void onCreate() { super.onCreate(); settingsHelper = new SettingsHelper(this); twitter = new TwitterFactory().getInstance(); settingsHelper.configureOAuth(twitter); String[] credentials = settingsHelper.getTwitPicCredentials(); username = credentials[0]; password = credentials[1]; } public Twitter getTwitter() { return twitter; } public boolean isAuthorized() { return settingsHelper.hasAccessToken(); } public String beginAuthorization() { try { if (null == currentRequestToken) { currentRequestToken = twitter.getOAuthRequestToken(); } return currentRequestToken.getAuthorizationURL(); } catch (TwitterException e) { e.printStackTrace(); } return null; } public void authorized() { try { AccessToken accessToken = twitter.getOAuthAccessToken(); settingsHelper.storeAccessToken(accessToken); } catch (TwitterException e) { throw new RuntimeException("Unable to authorize user", e); } } public boolean authorize(String pin) { try { AccessToken accessToken = twitter.getOAuthAccessToken(currentRequestToken, pin); settingsHelper.storeAccessToken(accessToken); return true; } catch (TwitterException e) { throw new RuntimeException("Unable to authorize user", e); } } public String getTwitPicUsername() { return username; } public String getTwitPicPassword() { return password; } public boolean hasTwitPicCredentials() { return (null != username && null != password); } public void saveTwitPicCredentials(String username, String password) { this.username = username; this.password = password; settingsHelper.saveTwitPicCredentials(username, password); } }