package jp.mydns.sys1yagi.android.flickrjandroidsample; import java.net.URL; import com.googlecode.flickrjandroid.Flickr; import com.googlecode.flickrjandroid.auth.Permission; import com.googlecode.flickrjandroid.oauth.OAuth; import com.googlecode.flickrjandroid.oauth.OAuthInterface; import com.googlecode.flickrjandroid.oauth.OAuthToken; import android.app.Activity; import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; import android.content.SharedPreferences.Editor; import android.net.Uri; import android.os.AsyncTask; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.EditText; import android.widget.Toast; public class OAuthActivity extends Activity { private OAuthActivity This() { return this; } private final static String PREF_NAME = "auth_cache"; private final static String KEY_OAUTH_TOKEN = "token"; private final static String KEY_TOKEN_SECRET = "tokenSecret"; private final static String KEY_USER_NAME = "userName"; private final static String KEY_USER_ID = "userId"; private Flickr mFlickr = null; private OAuthToken mOAuthToken = null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_oauth); mFlickr = new Flickr(Settings.API_KEY, Settings.API_SECRET); findViewById(R.id.button).setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { startOauth(); } }); findViewById(R.id.pin_code_button).setOnClickListener( new OnClickListener() { @Override public void onClick(View v) { EditText pinCodeEdit = (EditText) findViewById(R.id.pin_code_edit); verifyPin(pinCodeEdit.getText().toString()); } }); } private void verifyPin(String pin) { if (mOAuthToken == null) { return; } new AsyncTask<String, Void, Boolean>() { protected Boolean doInBackground(String[] params) { try { OAuthInterface oauthApi = mFlickr.getOAuthInterface(); OAuth oauth = oauthApi.getAccessToken( mOAuthToken.getOauthToken(), mOAuthToken.getOauthTokenSecret(), params[0]); saveOAuthToken(oauth.getUser().getUsername(), oauth .getUser().getId(), oauth.getToken() .getOauthToken(), oauth.getToken() .getOauthTokenSecret()); return true; } catch (Exception e) { e.printStackTrace(); } return false; }; @Override protected void onPostExecute(Boolean result) { if (result) { String userName = getUserName(); Toast.makeText(This(), "OAuth OK!:" + userName, Toast.LENGTH_SHORT).show(); } else { Toast.makeText(This(), "OAuth Failed!", Toast.LENGTH_SHORT) .show(); } } }.execute(pin); } private void startOauth() { new AsyncTask<Void, Void, String>() { @Override protected String doInBackground(Void... params) { try { OAuthInterface oAuthInterface = mFlickr.getOAuthInterface(); mOAuthToken = oAuthInterface.getRequestToken(null); URL oauthUrl = oAuthInterface.buildAuthenticationUrl( Permission.WRITE, mOAuthToken); return oauthUrl.toString(); } catch (Exception e) { e.printStackTrace(); } return null; } @Override protected void onPostExecute(String result) { if (result != null) { Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(result)); startActivity(intent); } } }.execute(); } public void saveOAuthToken(String userName, String userId, String token, String tokenSecret) { SharedPreferences sp = getSharedPreferences(PREF_NAME, Context.MODE_PRIVATE); Editor editor = sp.edit(); editor.putString(KEY_OAUTH_TOKEN, token); editor.putString(KEY_TOKEN_SECRET, tokenSecret); editor.putString(KEY_USER_NAME, userName); editor.putString(KEY_USER_ID, userId); editor.commit(); } private String getUserName() { SharedPreferences sp = getSharedPreferences(PREF_NAME, Context.MODE_PRIVATE); return sp.getString(KEY_USER_NAME, ""); } }