Android Open Source - built.io-todo-android Built Twitter Login Activity






From Project

Back to project page built.io-todo-android.

License

The source code is released under:

Terms of Use & Licensing<br />Hand Drawn Web Icon Set is free and it will always be free. You can use it for both commercial and non-commercial projects. You can modify the icons anyway you like. Howe...

If you think the Android project built.io-todo-android 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.raweng.built.userInterface;
//  w  w  w.  j a  v a 2 s .  c  om
import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.Color;
import android.net.Uri;
import android.os.Bundle;
import android.webkit.WebView;
import android.webkit.WebViewClient;

import com.raweng.built.BuiltError;
import com.raweng.built.utilities.BuiltAppConstants;
import com.raweng.twitter4j.Twitter;
import com.raweng.twitter4j.TwitterFactory;
import com.raweng.twitter4j.auth.AccessToken;
import com.raweng.twitter4j.auth.RequestToken;
import com.raweng.twitter4j.conf.Configuration;
import com.raweng.twitter4j.conf.ConfigurationBuilder;
/**
 * Activity for twitter authentication.
 * 
 * @author raw engineering, Inc
 *
 */
public class BuiltTwitterLoginActivity extends Activity {


  private static final String TAG = "BuiltTwitterLoginActivity";

  final String IEXTRA_OAUTH_VERIFIER = "oauth_verifier";

  private WebView twitterLoginWebView;
  private ProgressDialog progressDialog;

  private static Twitter twitter;
  private static RequestToken requestToken;

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.builtio_twitter_login_activity);

    if(BuiltAppConstants.TWITTER_CONSUMER_KEY == null || BuiltAppConstants.TWITTER_CONSUMER_SECRET == null){
      
      BuiltTwitterLoginActivity.this.setResult(BuiltAppConstants.REQUEST_CODE_TWITTER_FAILED);
      BuiltTwitterLoginActivity.this.finish();
    }

    progressDialog = new ProgressDialog(this);
    progressDialog.setMessage(BuiltAppConstants.PROGRESS_MESSAGE);
    progressDialog.setCancelable(false);
    progressDialog.setCanceledOnTouchOutside(false);
    progressDialog.show();

    twitterLoginWebView = (WebView)findViewById(R.id.twitter_login_web_view);
    twitterLoginWebView.setBackgroundColor(Color.TRANSPARENT);
    twitterLoginWebView.setWebViewClient( new WebViewClient(){
      @Override
      public boolean shouldOverrideUrlLoading(WebView view, String url){
        if( url.contains(BuiltAppConstants.TWITTER_CALLBACK_URL)){
          Uri uri = Uri.parse(url);
          saveAccessTokenAndFinish(uri);
          return true;
        }
        return false;
      }

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

        if(progressDialog != null) progressDialog.dismiss();
      }

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

        if(progressDialog != null) progressDialog.show();
      }
    });


    fetchTwitterAuth();
  }

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

    if(progressDialog != null) {
      progressDialog.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(IEXTRA_OAUTH_VERIFIER);
        try { 

          AccessToken accessToken = twitter.getOAuthAccessToken(requestToken, verifier); 
          BuiltAppConstants.TWITTER_ACCESS_TOKEN = accessToken.getToken();
          BuiltAppConstants.TWITTER_ACCESS_TOKEN_SECRET =  accessToken.getTokenSecret();
          BuiltTwitterLoginActivity.this.setResult(BuiltAppConstants.REQUEST_CODE_TWITTER_SUCCESS);
        } catch (Exception e) { 
          BuiltError builtError = new BuiltError();
          builtError.setErrorMessage(e.toString());
          Intent twitterAuthFail = new Intent();
          twitterAuthFail.putExtra("error_message", e.toString());
          BuiltTwitterLoginActivity.this.setResult(BuiltAppConstants.REQUEST_CODE_TWITTER_FAILED, twitterAuthFail);
        }
        BuiltTwitterLoginActivity.this.finish();
      }
    }).start();
  }

  private void fetchTwitterAuth() {    
    ConfigurationBuilder configurationBuilder = new ConfigurationBuilder();
    configurationBuilder.setOAuthConsumerKey(BuiltAppConstants.TWITTER_CONSUMER_KEY);
    configurationBuilder.setOAuthConsumerSecret(BuiltAppConstants.TWITTER_CONSUMER_SECRET);
    Configuration configuration = configurationBuilder.build();
    twitter = new TwitterFactory(configuration).getInstance();

    new Thread(new Runnable() {
      @Override
      public void run() {
        try {
          if (BuiltAppConstants.isNetworkAvailable) {
            requestToken = twitter.getOAuthRequestToken(BuiltAppConstants.TWITTER_CALLBACK_URL);
          }else{
            Intent noNetworkIntent = new Intent();
            noNetworkIntent.putExtra("error_message", BuiltAppConstants.ErrorMessage_NoNetwork);
            noNetworkIntent.putExtra("error_code", BuiltAppConstants.NONETWORKCONNECTION);
            BuiltTwitterLoginActivity.this.setResult(BuiltAppConstants.REQUEST_CODE_TWITTER_FAILED, noNetworkIntent);
            BuiltTwitterLoginActivity.this.runOnUiThread(new Runnable() {
              @Override
              public void run() {
                progressDialog.cancel();
                finish();
              }
            });
            return;
          }
          
        } catch (Exception error) {
          
          Intent twitterAuthFail = new Intent();
          twitterAuthFail.putExtra("error_message", error.getMessage());
          BuiltTwitterLoginActivity.this.setResult(BuiltAppConstants.REQUEST_CODE_TWITTER_FAILED, twitterAuthFail);
          BuiltTwitterLoginActivity.this.runOnUiThread(new Runnable() {
            @Override
            public void run() {
              progressDialog.cancel();
              finish();
            }
          });
          return;
        }

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

}




Java Source Code List

android.UnusedStub.java
com.example.todoapp.LoginActivity.java
com.example.todoapp.TaskModel.java
com.example.todoapp.TaskViewHolder.java
com.example.todoapp.TodoActivity.java
com.example.todoapp.TodoAppApplication.java
com.raweng.built.userInterface.BuiltAuthResultCallBack.java
com.raweng.built.userInterface.BuiltDetails.java
com.raweng.built.userInterface.BuiltListViewResultCallBack.java
com.raweng.built.userInterface.BuiltTwitterLoginActivity.java
com.raweng.built.userInterface.BuiltUIListViewController.java
com.raweng.built.userInterface.BuiltUILoginController.java
com.raweng.built.userInterface.BuiltUIPickerController.java
com.raweng.built.userInterface.BuiltUISignUpController.java
com.raweng.built.userInterface.BuiltioUserInterfaceActivity.java
com.raweng.built.userInterface.CustomEditTextErrorField.java
com.raweng.built.userInterface.GetGoogleAccessToken.java
com.raweng.built.userInterface.IGoogleLoginDelegate.java
com.raweng.built.userInterface.ResultDataSource.java
com.raweng.built.userInterface.UIAndroidExplorerScreen.java
com.raweng.built.userInterface.pulltorefresh.ILoadingLayout.java
com.raweng.built.userInterface.pulltorefresh.IPullToRefresh.java
com.raweng.built.userInterface.pulltorefresh.LoadingLayoutProxy.java
com.raweng.built.userInterface.pulltorefresh.OverscrollHelper.java
com.raweng.built.userInterface.pulltorefresh.PullToRefreshAdapterViewBase.java
com.raweng.built.userInterface.pulltorefresh.PullToRefreshBase.java
com.raweng.built.userInterface.pulltorefresh.PullToRefreshListView.java
com.raweng.built.userInterface.pulltorefresh.internal.EmptyViewMethodAccessor.java
com.raweng.built.userInterface.pulltorefresh.internal.FlipLoadingLayout.java
com.raweng.built.userInterface.pulltorefresh.internal.IndicatorLayout.java
com.raweng.built.userInterface.pulltorefresh.internal.LoadingLayout.java
com.raweng.built.userInterface.pulltorefresh.internal.RotateLoadingLayout.java
com.raweng.built.userInterface.pulltorefresh.internal.Utils.java
com.raweng.built.userInterface.pulltorefresh.internal.ViewCompat.java