0

編集テキスト ボックスと投稿ボタンを使用して、アプリを使用して Twitter のタイムラインにツイートを投稿しています。

しかし、すべての処理の後、「ステータスが正常に更新されました」というトーストが表示されますが、ツイートはタイムラインに表示されません.LogCatでエラー400が発生し、認証データが正しくないというメッセージが表示されます!! 私はOAuthが初めてです。この問題を解決するにはどうすればよいですか?

コードは次のとおりです。

    public class PostCommentActivity extends Activity {

        private static final String CONSUMER_KEY = "*****";
        private static final String CONSUMER_SECRET = "*******";
        static String PREFERENCE_NAME = "twitter_oauth";
        static final String PREF_KEY_OAUTH_TOKEN = "oauth_token";
        static final String PREF_KEY_OAUTH_SECRET = "oauth_token_secret";
        static final String PREF_KEY_TWITTER_LOGIN = "isTwitterLogedIn";

        SharedPreferences mSharedPreferences;
        ProgressDialog pDialog;
        EditText et;
        Button postbtn;
        Twitter twitter;

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            // TODO Auto-generated method stub
            setContentView(R.layout.post_comment);
            super.onCreate(savedInstanceState);
            et = (EditText) findViewById(R.id.editText);

            mSharedPreferences = getApplicationContext().getSharedPreferences("MyPref",
                                 0);
            postbtn = (Button) findViewById(R.id.Post_btn);
            postbtn.setOnClickListener(new OnClickListener() {@Override

            public void onClick(View v) {
                // Get the status from EditText
                Twitter twitter = TwitterFactory.getSingleton();
                String status = et.getText().toString();

                // Check for blank text
                if (status.trim().length() > 0) {
                    // update status
                    new updateTwitterStatus().execute(status);
                }
                else {
                    // EditText is empty
                    Toast.makeText(getApplicationContext(),
                                "Please enter status message", Toast.LENGTH_SHORT).show();
                }
            }
        });
    }

    class updateTwitterStatus extends AsyncTask<String, String, String> {

        @Override
        protected void onPreExecute() {
            super.onPreExecute();
            pDialog = new ProgressDialog(PostCommentActivity.this);
            pDialog.setMessage("Updating to twitter...");
            pDialog.setIndeterminate(false);
            pDialog.setCancelable(false);
            pDialog.show();
        }

        /**
         * Getting Places JSON
         *
         **/
        protected String doInBackground(String... args) {
            Log.d("Tweet Text", "> " + args[0]);
            String status = args[0];
            try {
                ConfigurationBuilder builder = new ConfigurationBuilder();
                builder.setOAuthConsumerKey(CONSUMER_KEY);
                builder.setOAuthConsumerSecret(CONSUMER_SECRET);

                ;    // Access Token
                String access_token = mSharedPreferences.getString(
                        PREF_KEY_OAUTH_TOKEN, "");

                // Access Token Secret
                String access_token_secret = mSharedPreferences.getString(
                                               PREF_KEY_OAUTH_SECRET, "");
                AccessToken accessToken = new AccessToken(access_token,
                access_token_secret);
                Twitter twitter = new TwitterFactory(builder.build())
                                        .getInstance(accessToken);
                twitter.setOAuthAccessToken(accessToken);

                // Update status
                twitter4j.Status response = twitter.updateStatus(status);
                Log.d("Status", "> " + response.getText());
            }
            catch (TwitterException e) {
                // Error in updating status
                Log.d("Twitter Update Error", e.getMessage());
            }
            return null;
        }
        protected void onPostExecute(String file_url) {

            // Dismiss the dialog after getting all products
            pDialog.dismiss();

            // Updating UI from Background Thread
            runOnUiThread(new Runnable() {
                @Override
                public void run() {
                    Toast.makeText(getApplicationContext(),
                            "Status tweeted successfully", Toast.LENGTH_SHORT).show();

                    // Clearing EditText field
                    et.setText("");
                }
             });
        }}
    }
4

1 に答える 1