Hi In my android app I can make calls to Twitter api immediately after
I login. I am using same instance of OAuthConsumer. But when I create
OAuthconsumer for subsequent call and use setTokenWithSecret I get
Incorrect signature error.

I spent few hours trying to debug but no luck... any help is
appreciated.

Following is code ...in onnewIntent if statement 1== 1 works but I get
Incorrect signature error If I call verify method on Twitter adapter

private static String TAG = "OAuthForTwitter";

private CommonsHttpOAuthConsumer httpOauthConsumer;
private OAuthProvider httpOauthprovider;
public final static String consumerKey = "";
public final static String consumerSecret = "";
private final String CALLBACKURL = "myapp://mainactivity";


@Override
protected void onNewIntent(Intent intent) {

    super.onNewIntent(intent);
    Log.d(TAG, "onNewIntent");

    Uri uri = intent.getData();

    if (uri != null && uri.toString().startsWith(CALLBACKURL)) {

        String verifier = uri
                .getQueryParameter(oauth.signpost.OAuth.OAUTH_VERIFIER);

        Log.d(TAG, "onNewIntent  " + " verifier " + verifier);
        try {

            httpOauthprovider.retrieveAccessToken(httpOauthConsumer,
                    verifier);
            String userKey = httpOauthConsumer.getToken();
            String userSecret = httpOauthConsumer.getConsumerSecret();

            if (1 == 1) {
                String surl = "http://api.twitter.com/1/account/
verify_credentials.xml";

                HttpGet request = null;
                HttpClient httpClient = null;
                HttpResponse response = null;
                request = new HttpGet(surl);
                httpOauthConsumer.sign(request);
                System.out.println("Sending request to Twitter...");
                httpClient = new DefaultHttpClient();

                response = httpClient.execute(request);
                String sresponse = parseResponseToString(response);
                Log.d(TAG, sresponse);
            } else {

                TwitterAdapter adapter = new TwitterAdapter(null,
                        consumerKey, consumerSecret, userKey,
userSecret);
                String s = adapter.VerifyUser();
                Log.d(TAG, s);
            }

        } catch (Exception e) {
            Log.d(TAG, "onNewIntent error " + e.getMessage());
        }

    }
}


@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    doOauth();
}

private void doOauth() {
    try {
        httpOauthConsumer = new CommonsHttpOAuthConsumer(consumerKey,
                consumerSecret);
        httpOauthprovider = new DefaultOAuthProvider(
                "http://twitter.com/oauth/request_token";,
                "http://twitter.com/oauth/access_token";,
                "http://twitter.com/oauth/authorize";);

        String authUrl = httpOauthprovider.retrieveRequestToken(
                httpOauthConsumer, CALLBACKURL);

        this.startActivity(new Intent(Intent.ACTION_VIEW, Uri
                .parse(authUrl)));
        Log.d(TAG, "sent doOauth");
    } catch (Exception e) {
        Toast.makeText(this, e.getMessage(),
Toast.LENGTH_LONG).show();
    }
    Log.d(TAG, " doOauth Complete");
}


public class TwitterAdapter {

    oauth.signpost.commonshttp.CommonsHttpOAuthConsumer
httpOauthConsumer;

    public TwitterAdapter(String username, String consumerkey,String
consumersecret, String accesstoken, String accesssecret) {

        httpOauthConsumer = new CommonsHttpOAuthConsumer(consumerkey,
consumersecret);

        httpOauthConsumer.setTokenWithSecret(accesstoken,
consumersecret);
    }


    public String VerifyUser() throws ClientProtocolException,
IOException,
            OAuthMessageSignerException,
OAuthExpectationFailedException,
            OAuthCommunicationException {

        String surl = "http://api.twitter.com/1/account/
verify_credentials.xml";

        HttpGet request = null;
        HttpClient httpClient = null;
        HttpResponse response = null;
        request = new HttpGet(surl);
        httpOauthConsumer.sign(request);
        System.out.println("Sending request to Twitter...");
        httpClient = new DefaultHttpClient();

        response = httpClient.execute(request);
        return parseResponseToString(response);

    }
}

-- 
Twitter developer documentation and resources: http://dev.twitter.com/doc
API updates via Twitter: http://twitter.com/twitterapi
Issues/Enhancements Tracker: http://code.google.com/p/twitter-api/issues/list
Change your membership to this group: 
http://groups.google.com/group/twitter-development-talk

Reply via email to