I finally earned it. I think this did not work before because I did not get the access token in WebView.
In my webview in onCreate I did it
myWebView = (WebView)findViewById(R.id.myWebView); myWebView.setWebViewClient(new WebViewClient() { @Override public boolean shouldOverrideUrlLoading(WebView webView, String url) { if (url != null && url.startsWith(TWITTER_CALLBACK_URL)) { System.out.println("TWEET TWEET TWEET"); retrieveAccessToken(url); //added this webView.setVisibility(View.GONE); //added this return true; } else return false; } });
and in my retrieveAccessToken (url) I have this.
private void retrieveAccessToken(final String url) { Uri uri = Uri.parse(url); String verifier = uri.getQueryParameter(URL_TWITTER_OAUTH_VERIFIER); try { // Get the access token AccessToken accessToken = twitter.getOAuthAccessToken(requestToken, verifier); // Shared Preferences Editor e = mSharedPreferences.edit(); // After getting access token, access token secret // store them in application preferences e.putString(PREF_KEY_OAUTH_TOKEN, accessToken.getToken()); e.putString(PREF_KEY_OAUTH_SECRET,accessToken.getTokenSecret()); // Store login status - true e.putBoolean(PREF_KEY_TWITTER_LOGIN, true); e.commit(); // save changes Log.e("Twitter OAuth Token", "> " + accessToken.getToken()); TextView twitterConnect = (TextView) findViewById(R.id.twitterConnect); String disconnect = "Disconnect"; twitterConnect.setText(disconnect); // Getting user details from twitter // For now i am getting his name only long userID = accessToken.getUserId(); User user = twitter.showUser(userID); String username = user.getName(); txtUpdate.setVisibility(View.VISIBLE); btnUpdateStatus.setVisibility(View.VISIBLE); // Displaying in xml ui //twitterUser.setText(Html.fromHtml("<b>Welcome " + username + "</b>")); TextView twitterUser = (TextView) findViewById(R.id.twitterDesc); twitterUser.setText(Html.fromHtml(username)); Toast.makeText(getApplicationContext(), "LOGGED IN AS " + username, Toast.LENGTH_LONG).show(); } catch (Exception e) { // Check log for login errors Log.e("Twitter Login Error", "> " + e.getMessage()); } }
I got this to work exactly the way I wanted it and successfully logged into the system. Correct me if I do something wrong.
Thanks @ user1690588 and @Nikolay Elenkov for your time to help me. :)
source share