package jp.mydns.sys1yagi.android.scribejavasample; import org.scribe.builder.ServiceBuilder; import org.scribe.builder.api.TwitterApi; import org.scribe.model.OAuthRequest; import org.scribe.model.Response; import org.scribe.model.Token; import org.scribe.model.Verb; import org.scribe.model.Verifier; import org.scribe.oauth.OAuthService; import android.app.Activity; import android.content.Intent; import android.net.Uri; import android.os.Bundle; import android.os.Handler; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; public class ScribeJavaSampleActivity extends Activity { private ScribeJavaSampleActivity This() { return this; } private final static String CONSUMER_KEY = "YOUR_TWITTER_COMSUMER_KEY"; private final static String CONSUMER_SECRET = "YOUR_TWITTER_COMSUMER_SECRET"; private OAuthService mService; private Token mRequestToken; private Token mAccessToken; private Handler mHandler; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_scribe_java_sample); mHandler = new Handler(); findViewById(R.id.oauth_button).setOnClickListener( new OnClickListener() { @Override public void onClick(View v) { new Thread() { @Override public void run() { mService = new ServiceBuilder() .provider(TwitterApi.class) .apiKey(CONSUMER_KEY) .apiSecret(CONSUMER_SECRET) .callback("oob").build(); mRequestToken = mService.getRequestToken(); String authURL = mService .getAuthorizationUrl(mRequestToken); Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(authURL)); startActivity(intent); } }.start(); } }); findViewById(R.id.pin_code_button).setOnClickListener( new OnClickListener() { @Override public void onClick(View v) { if (mService == null) { return; } final String pin = ((EditText) findViewById(R.id.pin_code)) .getText().toString(); new Thread() { public void run() { mAccessToken = mService.getAccessToken( mRequestToken, new Verifier(pin)); mHandler.post(new Runnable() { @Override public void run() { if (mAccessToken != null) { Toast.makeText(This(), "OAuth success!", Toast.LENGTH_SHORT).show(); findViewById(R.id.tweet_button) .setEnabled(true); } } }); } }.start(); } }); findViewById(R.id.tweet_button).setOnClickListener( new OnClickListener() { @Override public void onClick(View v) { tweet(); } }); } private void tweet() { final Button button = (Button) findViewById(R.id.tweet_button); button.setEnabled(false); new Thread() { public void run() { OAuthRequest request = new OAuthRequest(Verb.POST, "https://api.twitter.com/1.1/statuses/update.json"); request.addBodyParameter("status", "hello scribe java!"); mService.signRequest(mAccessToken, request); final Response response = request.send(); final int status = response.getCode(); final String body = response.getBody(); mHandler.post(new Runnable() { @Override public void run() { if (status == 200) { Toast.makeText(This(), "tweet success!", Toast.LENGTH_SHORT).show(); } else { Toast.makeText(This(), "tweet failed!:" + body, Toast.LENGTH_SHORT).show(); } button.setEnabled(true); } }); }; }.start(); } }