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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
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