Android Open Source - Twitter-News Twitter Login Activity






From Project

Back to project page Twitter-News.

License

The source code is released under:

Apache License

If you think the Android project Twitter-News listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

package com.kaplandroid.twitternews.twitterapi;
/*from   w w  w.j av  a  2s . c  o  m*/
import twitter4j.Twitter;
import twitter4j.TwitterFactory;
import twitter4j.auth.AccessToken;
import twitter4j.auth.RequestToken;
import twitter4j.conf.Configuration;
import twitter4j.conf.ConfigurationBuilder;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.graphics.Bitmap;
import android.graphics.Color;
import android.net.Uri;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.TextView;
import android.widget.Toast;

import com.kaplandroid.twitternews.R;

/**
 * 
 * For logining to twitter
 * 
 * @author KAPLANDROID
 * 
 */
public class TwitterLoginActivity extends Activity {

  public static final int TWITTER_LOGIN_RESULT_CODE_SUCCESS = 1111;
  public static final int TWITTER_LOGIN_RESULT_CODE_FAILURE = 2222;

  private static final String TAG = "LoginActivity";

  private WebView twitterLoginWebView;
  private AlertDialog mAlertBuilder;
  private static String twitterConsumerKey;
  private static String twitterConsumerSecret;

  private static Twitter twitter;
  private static RequestToken requestToken;

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_twitter_login);
    twitterConsumerKey = TwitterConstant.TWITTER_CONSUMER_KEY;
    twitterConsumerSecret = TwitterConstant.TWITTER_CONSUMER_SECRET;

    if (twitterConsumerKey == null || twitterConsumerSecret == null) {
      Log.e(TAG, "ERROR: Consumer Key and Consumer Secret required!");
      TwitterLoginActivity.this.setResult(TWITTER_LOGIN_RESULT_CODE_FAILURE);
      TwitterLoginActivity.this.finish();
    }

    mAlertBuilder = new AlertDialog.Builder(this).create();
    mAlertBuilder.setCancelable(false);
    mAlertBuilder.setTitle(R.string.please_wait_title);
    View view = getLayoutInflater().inflate(R.layout.view_loading, null);
    ((TextView) view.findViewById(R.id.messageTextViewFromLoading)).setText(getString(R.string.authenticating));
    mAlertBuilder.setView(view);
    mAlertBuilder.show();

    twitterLoginWebView = (WebView) findViewById(R.id.twitterLoginWebView);
    twitterLoginWebView.setBackgroundColor(Color.TRANSPARENT);
    twitterLoginWebView.setWebViewClient(new WebViewClient() {
      @Override
      public boolean shouldOverrideUrlLoading(WebView view, String url) {

        if (url.contains(TwitterConstant.TWITTER_CALLBACK_URL)) {
          Uri uri = Uri.parse(url);
          TwitterLoginActivity.this.saveAccessTokenAndFinish(uri);
          return true;
        }
        return false;
      }

      @Override
      public void onPageFinished(WebView view, String url) {
        super.onPageFinished(view, url);

        if (mAlertBuilder != null) {
          mAlertBuilder.cancel();
        }
      }

      @Override
      public void onPageStarted(WebView view, String url, Bitmap favicon) {
        super.onPageStarted(view, url, favicon);

        if (mAlertBuilder != null) {
          mAlertBuilder.show();
        }
      }
    });

    Log.d(TAG, "Authorize....");
    askOAuth();
  }

  @Override
  protected void onDestroy() {
    super.onDestroy();

    if (mAlertBuilder != null) {
      mAlertBuilder.dismiss();
    }
  }

  @Override
  protected void onNewIntent(Intent intent) {
    super.onNewIntent(intent);
  }

  @Override
  protected void onResume() {
    super.onResume();
  }

  private void saveAccessTokenAndFinish(final Uri uri) {
    new Thread(new Runnable() {
      @Override
      public void run() {
        String verifier = uri.getQueryParameter(TwitterConstant.IEXTRA_OAUTH_VERIFIER);
        try {
          SharedPreferences sharedPrefs = getSharedPreferences(TwitterConstant.SHARED_PREF_NAME,
              Context.MODE_PRIVATE);
          AccessToken accessToken = twitter.getOAuthAccessToken(requestToken, verifier);
          Editor e = sharedPrefs.edit();
          e.putString(TwitterConstant.SHARED_PREF_KEY_TOKEN, accessToken.getToken());
          e.putString(TwitterConstant.SHARED_PREF_KEY_SECRET, accessToken.getTokenSecret());
          e.commit();

          Log.d(TAG, "TWITTER LOGIN SUCCESS ----TOKEN " + accessToken.getToken());
          Log.d(TAG, "TWITTER LOGIN SUCCESS ----TOKEN SECRET " + accessToken.getTokenSecret());
          TwitterLoginActivity.this.setResult(TWITTER_LOGIN_RESULT_CODE_SUCCESS);
        } catch (Exception e) {
          e.printStackTrace();
          if (e.getMessage() != null) {
            Log.e(TAG, e.getMessage());

          } else {
            Log.e(TAG, "ERROR: Twitter callback failed");
          }
          TwitterLoginActivity.this.setResult(TWITTER_LOGIN_RESULT_CODE_FAILURE);
        }
        TwitterLoginActivity.this.finish();
      }
    }).start();
  }

  public static boolean isActive(Context ctx) {
    SharedPreferences sharedPrefs = ctx
        .getSharedPreferences(TwitterConstant.SHARED_PREF_NAME, Context.MODE_PRIVATE);
    return sharedPrefs.getString(TwitterConstant.SHARED_PREF_KEY_TOKEN, null) != null;
  }

  public static void logOutOfTwitter(Context ctx) {
    SharedPreferences sharedPrefs = ctx
        .getSharedPreferences(TwitterConstant.SHARED_PREF_NAME, Context.MODE_PRIVATE);
    Editor e = sharedPrefs.edit();
    e.putString(TwitterConstant.SHARED_PREF_KEY_TOKEN, null);
    e.putString(TwitterConstant.SHARED_PREF_KEY_SECRET, null);
    e.commit();
  }

  public static String getAccessToken(Context ctx) {
    SharedPreferences sharedPrefs = ctx
        .getSharedPreferences(TwitterConstant.SHARED_PREF_NAME, Context.MODE_PRIVATE);
    return sharedPrefs.getString(TwitterConstant.SHARED_PREF_KEY_TOKEN, null);
  }

  public static String getAccessTokenSecret(Context ctx) {
    SharedPreferences sharedPrefs = ctx
        .getSharedPreferences(TwitterConstant.SHARED_PREF_NAME, Context.MODE_PRIVATE);
    return sharedPrefs.getString(TwitterConstant.SHARED_PREF_KEY_SECRET, null);
  }

  private void askOAuth() {
    ConfigurationBuilder configurationBuilder = new ConfigurationBuilder();
    configurationBuilder.setOAuthConsumerKey(twitterConsumerKey);
    configurationBuilder.setOAuthConsumerSecret(twitterConsumerSecret);
    Configuration configuration = configurationBuilder.build();
    twitter = new TwitterFactory(configuration).getInstance();

    new Thread(new Runnable() {
      @Override
      public void run() {
        try {
          requestToken = twitter.getOAuthRequestToken(TwitterConstant.TWITTER_CALLBACK_URL);
        } catch (Exception e) {
          final String errorString = e.toString();
          TwitterLoginActivity.this.runOnUiThread(new Runnable() {
            @Override
            public void run() {
              mAlertBuilder.cancel();
              Toast.makeText(TwitterLoginActivity.this, errorString.toString(), Toast.LENGTH_SHORT)
                  .show();
              finish();
            }
          });
          return;
        }

        TwitterLoginActivity.this.runOnUiThread(new Runnable() {
          @Override
          public void run() {
            twitterLoginWebView.loadUrl(requestToken.getAuthenticationURL());
          }
        });
      }
    }).start();
  }

}




Java Source Code List

com.kaplandroid.twitternews.AppData.java
com.kaplandroid.twitternews.db.MobilikeDBHelper.java
com.kaplandroid.twitternews.model.ChartModel.java
com.kaplandroid.twitternews.model.SourceForDB.java
com.kaplandroid.twitternews.model.TweetForDB.java
com.kaplandroid.twitternews.twitterapi.TwitterConstant.java
com.kaplandroid.twitternews.twitterapi.TwitterLoginActivity.java
com.kaplandroid.twitternews.twitterapi.TwitterMethods.java
com.kaplandroid.twitternews.ui.InfoActivity.java
com.kaplandroid.twitternews.ui.MainActivity.java
com.kaplandroid.twitternews.ui.reader.EndOfNewsActivity.java
com.kaplandroid.twitternews.ui.reader.ReadNewsActivity.java
com.kaplandroid.twitternews.ui.search.SearchKeywordActivity.java
com.kaplandroid.twitternews.ui.search.SearchProgressActivity.java
com.kaplandroid.twitternews.ui.statistics.ChartFragment.java
com.kaplandroid.twitternews.ui.statistics.StatisticMainActivity.java