TwitterでOAuth認証を行う(3:Access Tokenを取得する)


TwitterでOAuth認証を行う(2:Twitterの認証ページをブラウザで開く)“ではTwitterの認証ページを表示する所までを
実装しました。

今回はTwitterの認証ページから発行されるIntentから、Access TokenとAccess Token Secretを取得する方法を
紹介します。

Access TokenとAccess Token Secretを使用することで、Twitterの認証ページを経由することなく、アカウントを
使用することができます。

詳細は以下から。

まずはサンプルコードからです。

このサンプルコードは新規に作成するのではなく、”TwitterでOAuth認証を行う(2:Twitterの認証ページをブラウザで開く)“で
作成したCallBackActivity.javaを編集していきます。

CallBackActivity.java

public class CallBackActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.callback);

    	AccessToken token = null;

    	//Twitterの認証画面から発行されるIntentからUriを取得
    	Uri uri = getIntent().getData();

    	if(uri != null && uri.toString().startsWith("Callback://CallBackActivity")){
    		//oauth_verifierを取得する
    		String verifier = uri.getQueryParameter("oauth_verifier");
    		try {
    			//AccessTokenオブジェクトを取得
				token = OauthSample._oauth.getOAuthAccessToken(OauthSample._req, verifier);
			} catch (TwitterException e) {
				e.printStackTrace();
			}
    	}

    	TextView tv = (TextView)findViewById(R.id.textView1);
    	CharSequence cs = "token:" + token.getToken() + "\r\n" + "token secret:" + token.getTokenSecret();
    	tv.setText(cs);
	}

}

11行目では、Twitterの認証画面から発行されるIntentからUriを取得しています。
このUriにはOAuth TokenとOAuth_Verifierが格納されています。

15行目では、UriからOAuth_Verifierを取得しています。

18行目では、Twitterの認証画面を表示する際に使用したRequestTokenオブジェクトと15行目で取得したOAuth_Verifierを
使用して、AccessTokenオブジェクトを作成しています。

25行目では、18行目で作成したAccessTokenオブジェクトからgetTokenメソッドとgetTokenSecretメソッドを使用して、
Access TokenとAccess Token Secretを取得しています。
このAccess TokenとAccess Token Secretをアプリ内で保存しておくことで、Twitterの認証ページを経由することなく、
アカウントを使用することができます。

サンプルコードではTextViewで出力するのみですが、実際にはDESなどで暗号化し、Preferenceなどで保存
(データを簡単に保存する方法(Preference編)参照)します。

次回予告

次回はAccess TokenとAccess Token Secretを使用して、つぶやき機能を実装する方法を紹介します。

4 Comments