Здесь я отправляю текст из приложения Android в учетную запись пользователя Twitter, и у меня есть секретный ключ ConsumerKey, секретный ключ потребителя, AccessToken и AccessToken.
https://api.twitter.com/1.1/statuses/update.json
Используя простой клиентский запрос HTTP, я хочу опубликовать данные в учетной записи пользователя Twitter. Как я могу это сделать?
Я попробовал что-то вроде
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost("http://api.twitter.com/1/statuses/update.json");
// HttpPost httppost = new HttpPost("https://graph.facebook.com/" + profile_ID + "/feed");
System.out.println("httppost " + httppost);
try {
// Add your data
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
nameValuePairs.add(new BasicNameValuePair("access_token", access_token_value));
nameValuePairs.add(new BasicNameValuePair("message", compose.getText().toString()));
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
// Execute HTTP Post Request
HttpResponse response = httpclient.execute(httppost);
System.out.println("response "+response.toString());
}
catch (ClientProtocolException e) {
// TODO Auto-generated catch block
}
catch (IOException e) {
// TODO Auto-generated catch block
}
Но параметры неправильны в моем коде, следуя этому, но я не понял его, каково подходящее решение для этого?
Если вы хотите опубликовать то, что вы ввели в текстовое поле, я могу помочь вам здесь. 1. Вы должны были включить библиотеку twitter4j в файл градиента следующим образом:
compile group: 'org.twitter4j', name: 'twitter4j-core', version: '4.0.1'
2. Включите в код следующий фрагмент кода:
public String sTweet;
EditText et_TweetText;
public static String consumerkey = "xxxxxxxxxxxxxxxxx";
public static String consumersecret = "xxxxxxxxxxxxxxxxx";
public static String accesstoken="xxxxxxxxxxxxxxxxx-xxxxxxxxxxxxxxxxx";
public static String accesstokensecret="xxxxxxxxxxxxxxxxx";
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
et_TweetText = (EditText) view.findViewById(R.id.et_TweetText);
bt_tweetIt = (Button) view.findViewById(R.id.bt_tweetIt);
bt_tweetIt.setOnClickListener(this);
}
@Override
public void onClick(View v) {
sTweet = et_TweetText.getText().toString();
Log.i(TAGTweet, "onClick- sTweet: " + sTweet);
if(CheckConnectivity()!=0){
Log.i(TAGTweet, "Internet Connection ON: ");
new UseTweeter().execute();
}
else {
Log.i(TAGTweet, "Internet Connection OFF: ");
ShowNoInternetConnectionAlert();
}
}
public class UseTweeter extends AsyncTask<String,String,String>{
@Override
protected String doInBackground(String... params) {
TweetThisMessage();
return null;
}
}
public void TweetThisMessage(){
ConfigurationBuilder builder = new ConfigurationBuilder();
builder.setOAuthAccessToken(accesstoken);
builder.setOAuthAccessTokenSecret(accesstokensecret);
builder.setOAuthConsumerKey(consumerkey);
builder.setOAuthConsumerSecret(consumersecret);
OAuthAuthorization auth = new OAuthAuthorization(builder.build());
Twitter twitter = new TwitterFactory().getInstance(auth);
try {
Log.i(TAGTweet, "sTweet in TweetThisMessage(): " + sTweet);
twitter.updateStatus(sTweet);
} catch (TwitterException e) {
e.printStackTrace();
return;
}
}
Надеюсь, поможет.
Поскольку вы просите, как чирикать из приложения для Android, используя REST API 1.1, я бы рекомендовал вам использовать библиотеку Twitter 4j для интеграции Twitter в приложение для Android.
Эта библиотека инкапсулирует функции аутентификации (через библиотеку OAuth) и другие важные функции внутри себя. Вот некоторые из его возможностей:
Twitter4J показывает:
Вам нужно вызвать простые функции через эту библиотеку, чтобы использовать определенные функции для Twitter. Вот ссылка, которая демонстрирует использование этой библиотеки: http://twitter4j.org/en/code-examples.html
Вы можете скачать эту библиотеку по ссылке http://twitter4j.org/.
Вот пример, реализованный с помощью библиотеки https://github.com/itog/Twitter4j-android-Sample.