Pages

Thursday 24 January 2013

android twitter login implementation

below is code to login twitter.

requirement:
lib need to use : using twitter 4j 
make twitter app at dev consolve of twitter

 private void parseUrl(String url) {
  try {
   if (url == null)
    return;
   if (url.startsWith(General.TWITTER_CALLBACK_URL)) {
    url += "&";

    String oauth_verifier = com.qtm.sign2learn.utils.Util.extractPattern(url,
      "oauth_verifier=(.*?)&");

    AccessToken accessToken = twitter.getOAuthAccessToken(
      requestToken, oauth_verifier);

    twitter.setOAuthAccessToken(accessToken);

    User user = twitter.verifyCredentials();

    String name = user.getName();

    String miniImage = user.getMiniProfileImageURL();
    String bigImage = user.getBiggerProfileImageURL();

    String fbUid = String.valueOf(user.getId());

    Editor edit = prefs.edit();
    edit.putString(General.pref_KEY_OAUTH_TOKEN,
      accessToken.getToken());
    edit.putString(General.pref_KEY_OAUTH_SECRET,
      accessToken.getTokenSecret());
    edit.putString(General.pref_TWITTER_ACCESS_TOKEN,
      accessToken.getToken());
//    edit.putString(General.pref_fb_uid, fbUid);
//    edit.putInt(General.pref_acctype, 2);
    prefs.getBoolean(General.pref_KEY_TWITTER_LOGIN, true);
    edit.commit();
    
    if (progressDialog != null && progressDialog.isShowing()) {
     progressDialog.dismiss();
    }
    loginDialog.dismiss();
   }
  } catch (Exception e) {
   e.printStackTrace();
  }
 }

 private class TwitterWebViewClient extends WebViewClient {
  @Override
  public void onPageStarted(WebView view, String url, Bitmap favicon) {
   super.onPageStarted(view, url, favicon);
   parseUrl(url);

   progressDialog.show();

  }

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

 public void loginToTwitter(View v) {

  TwitterFactory factory = new TwitterFactory();

  twitter = factory.getInstance();
  twitter.setOAuthConsumer(General.TWITTER_CONSUMER_KEY,
    General.TWITTER_CONSUMER_SECRET);
  try {
   requestToken = twitter
     .getOAuthRequestToken(General.TWITTER_CALLBACK_URL);

   loginDialog = new Dialog(this,
     android.R.style.Theme_Translucent_NoTitleBar);

   loginDialog.setContentView(R.layout.webview_popup);

   Button btnClose = (Button) loginDialog.findViewById(R.id.btnClose);

   btnClose.setOnClickListener(new View.OnClickListener() {

    @Override
    public void onClick(View v) {
     // TODO Auto-generated method stub
     loginDialog.dismiss();
    }
   });

   WebView webview = (WebView) loginDialog
     .findViewById(R.id.webViewVKLogin);
   webview.getSettings().setJavaScriptEnabled(true);
   webview.clearCache(true);

   webview.setWebViewClient(new TwitterWebViewClient());

   // otherwise CookieManager will fall with
   // java.lang.IllegalStateException:
   // CookieSyncManager::createInstance()
   // needs to be called before CookieSyncManager::getInstance()
   CookieSyncManager.createInstance(this);

   CookieManager cookieManager = CookieManager.getInstance();
   cookieManager.removeAllCookie();

   webview.loadUrl(requestToken.getAuthenticationURL());

   loginDialog.show();

   // this.startActivity(new Intent(Intent.ACTION_VIEW, Uri
   // .parse(requestToken.getAuthenticationURL())));
  } catch (TwitterException e) {
   e.printStackTrace();
  }

 }

In general.java put below variables
 // Twitter oauth urls and details
 public static final String TWITTER_CALLBACK_URL = "url here";
 public static final String TWITTER_CONSUMER_KEY = "key here";
 public static final String TWITTER_CONSUMER_SECRET = "secreat here";

 public static final String URL_TWITTER_AUTH = "auth_url";
 public static final String URL_TWITTER_OAUTH_VERIFIER = "oauth_verifier";
 public static final String URL_TWITTER_OAUTH_TOKEN = "oauth_token";
 
 public static final String PREFERENCE_NAME = "twitter_oauth";
 public static final String pref_KEY_OAUTH_TOKEN = "sing2learn_oauth_token";
 public static final String pref_KEY_OAUTH_SECRET = "sing2learn_oauth_token_secret";
 public static final String pref_KEY_TWITTER_LOGIN = "sing2learn_isTwitterLogedIn";
 public static final String pref_TWITTER_ACCESS_TOKEN = "sing2learn_twitter_token";
 



No comments :

Post a Comment