Hey guys, I am trying to make an android app for twitter. The code that i am using for the login is given below :
package com.twitter;
import org.apache.http.HttpVersion; import org.apache.http.client.HttpClient; import org.apache.http.conn.ClientConnectionManager; import org.apache.http.conn.scheme.PlainSocketFactory; import org.apache.http.conn.scheme.Scheme; import org.apache.http.conn.scheme.SchemeRegistry; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.impl.conn.tsccm.ThreadSafeClientConnManager; import org.apache.http.params.BasicHttpParams; import org.apache.http.params.HttpConnectionParams; import org.apache.http.params.HttpParams; import org.apache.http.params.HttpProtocolParams; import org.apache.http.protocol.HTTP;
import com.twitter.twitterEngine.TimeLine;
import oauth.signpost.OAuthProvider; import oauth.signpost.basic.DefaultOAuthProvider; import oauth.signpost.commonshttp.CommonsHttpOAuthConsumer; import oauth.signpost.http.HttpParameters; import android.app.Activity; import android.content.Intent; import android.content.SharedPreferences; import android.content.SharedPreferences.Editor; import android.net.Uri; import android.os.Bundle; import android.provider.UserDictionary.Words; import android.util.Log; import android.view.Gravity; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; import android.widget.Toast;
public class Twitter extends Activity implements OnClickListener{ /** Called when the activity is first created. */ private Button Login; private SharedPreferences prefs; private String prefFile = "twitter_prefs"; private final String CALLBACKURL = "myapp://mainactivity"; private CommonsHttpOAuthConsumer httpOauthConsumer; private OAuthProvider httpOauthprovider; public final static String consumerKey = "mykey"; public final static String consumerSecret = "mysecret"; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); initViews(); } public void initViews() { //initializing the consumer and the provider httpOauthConsumer = new CommonsHttpOAuthConsumer(consumerKey, consumerSecret); httpOauthprovider = new DefaultOAuthProvider("https:// api.twitter.com/oauth/request_token", "https://api.twitter.com/oauth/access_token";, "https://api.twitter.com/oauth/authorize";);
Login=(Button)findViewById(R.login.LoginButton); Login.setOnClickListener(this); }
private void doOauth() { try {
String authUrl = httpOauthprovider.retrieveRequestToken(httpOauthConsumer, CALLBACKURL); this.startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(authUrl))); } catch (Exception e) { Toast.makeText(this, e.getMessage(), Toast.LENGTH_LONG).show(); } } public void onClick(View arg0) { // TODO Auto-generated method stub doOauth(); } @Override protected void onNewIntent(Intent intent) { // TODO Auto-generated method stub super.onNewIntent(intent); Uri uri = intent.getData(); //Check if you got NewIntent event due to Twitter Call back only if (uri != null && uri.toString().startsWith(CALLBACKURL)) {
String verifier = uri.getQueryParameter(oauth.signpost.OAuth.OAUTH_VERIFIER); prefs = getSharedPreferences(prefFile, 0); try { // this will populate token and token_secret in consumer
httpOauthprovider.retrieveAccessToken(httpOauthConsumer, verifier); String userKey = httpOauthConsumer.getToken(); String userSecret = httpOauthConsumer.getConsumerSecret();
Log.d("TwitterCheckTwitterActivity","usersecret" + userSecret); Editor e = prefs.edit(); e.putString("userKey", userKey); e.putString("userSecret", userSecret); e.commit(); //start another activity Log.d("TwitterCheck","Startingthenewactivity"); Intent i = new Intent(this,TimeLine.class); startActivity(i); } catch(Exception e){ Log.d("", e.getMessage()); }
} }
}
The error that i get is while retrieving the access token. In the logcat i can see that i receive a verifier from twitter. How ever during the time of retrieving the access token i keep getting D/ ( 461): Request token or token secret not set in server reply. The service provider you use is probably buggy.
Please help Thanks