0

Android アプリケーションに Twitter を実装しました。また、ログインおよびログアウト機能も実装しました。正常に動作しますが、もう一度 Twitter にログインしようとすると、動作しません。以下の例外を与えています:

D/Twitter-WebView(545): Loading URL: https://twitter.com/oauth/authorize
D/dalvikvm(545): GC_FOR_MALLOC freed 13203 objects / 516760 bytes in 74ms
D/NativeCrypto(545): Freeing OpenSSL session
D/Twitter-WebView(545): Redirecting URL twitterapp://connect?oauth_token=Lfbjv4ciEma8bv4XijpY4eeZrkkf735Oz1WX2BtZM&oauth_verifier=fgb9EJUG6qS92Qkk4ZYDYwtJSQzaTKkB4JGOLllv4
I/global(545): Default buffer size used in BufferedReader constructor. It would be better to be explicit if an 8k-char buffer is required.
D/TwitterApp(545): Error getting access token
W/System.err(545): java.lang.IllegalStateException: consumer key/secret pair already set.
W/System.err(545):  at twitter4j.TwitterOAuthSupportBaseImpl.setOAuthConsumer(TwitterOAuthSupportBaseImpl.java:234)
W/System.err(545):  at twitter4j.Twitter.setOAuthConsumer(Twitter.java:54)
W/System.err(545):  at com.twit.sb.more_module.TwitterApp.configureToken(TwitterApp.java:67)
W/System.err(545):  at com.twit.sb.more_module.TwitterApp.access$7(TwitterApp.java:65)
W/System.err(545):  at com.twit.sb.more_module.TwitterApp$3.run(TwitterApp.java:140)

Twitterにログインしてログアウトするコードは次のとおりです。

if (mTwitter.hasAccessToken()) {
                    onTwitterClick();
                } else {
                    mTwitter.resetAccessToken();
                    mTwitter.authorize();
                }


    private void onTwitterClick() {
        if (mTwitter.hasAccessToken()) {
            final AlertDialog.Builder builder = new AlertDialog.Builder(this);
            builder.setMessage("Log out from Twitter ?")
                    .setCancelable(false)
                    .setPositiveButton("Yes",new DialogInterface.OnClickListener() {
                                    public void onClick(DialogInterface dialog,int id) {
                                    mTwitter.resetAccessToken();
                                }
                            })
                    .setNegativeButton("No",new DialogInterface.OnClickListener() {
                                    public void onClick(DialogInterface dialog,int id) {
                                    dialog.cancel();
                                }
                            });
            final AlertDialog alert = builder.create();
            alert.show();
        } else {
            mTwitter.authorize();
        }
    } 

    public void authorize() {
        mProgressDlg.setMessage("Initializing ...");
        mProgressDlg.show();

        new Thread() {
            @Override
            public void run() {
                String authUrl = "";
                int what = 1;

                try {
                    authUrl = mHttpOauthprovider.retrieveRequestToken(mHttpOauthConsumer, CALLBACK_URL);    

                    what = 0;

                    Log.d(TAG, "Request token url " + authUrl);
                } catch (Exception e) {
                    Log.d(TAG, "Failed to get request token");

                    e.printStackTrace();
                }

                mHandler.sendMessage(mHandler.obtainMessage(what, 1, 0, authUrl));
            }
        }.start();
    }
4

0 に答える 0