Quelle API devrais-je utiliser pour obtenir «n» tweets récents d'un utilisateur particulier avec un compte public?API Twitter pour obtenir les tweets récents d'un utilisateur particulier
Répondre
Pour obtenir des tweets d'un utilisateur spécifique, vous devez utiliser la méthode API GET statuses/user_timeline.
@AdamSack Cette méthode n'a pas été dépréciée. – abraham
Ajoutez simplement '? Screen_name = USERNAME' à la fin du point de terminaison. –
5 derniers tweets avec le code PHP.
$tweets_result=file_get_contents("https://api.twitter.com/1/statuses/user_timeline.json?include_entities=true&include_rts=true&screen_name=username&count=5");
$data=json_decode($tweets_result);
print_r($data);
Remarque: Ceci ne fonctionne plus à cause de OAuth et de l'API v1.1. – Jimbo
Au 7 mai 2013, v1.0 déjà dépréciée Twitter est à la retraite et est la seule version 1.1 méthode d'accès à l'API, en utilisant demandes authentifiées via OAuth.
Cela signifie que vous ne serez pas pouvoir utiliser file_get_contents()
de PHP entièrement sur ses propres pour saisir ce genre de chose - vous devez écrire un script qui utilise l'API OAuth et Twitters V1.1.
I recently wrote a Stack Overflow answer pour aider les débutants à l'API twitter v1.1, et j'ai écrit un cours pour vous faciliter la tâche.
Vous devez créer un compte de développeur, récupérer vous-même un ensemble de clés de développeur à utiliser dans votre application et effectuer des requêtes authentifiées à l'aide d'OAuth. Si vous lisez le message ci-dessus, vous verrez que j'ai créé un simple class pour vous permettre de le faire.
TLDR: Impossible d'utiliser v1.0 plus, utilisez 1.1 et cette classe pour la simplicité: https://github.com/J7mbo/twitter-api-php
Vous pouvez * utiliser * file_get_contents avec OAuth. – hakre
@hakre Fixe :) – Jimbo
Le shortcomming est également dans votre classe sur Github. Curly ridicule vous bâtard pas nécessaire si file_get_contents est là;) (Fixer d'abord ce message d'erreur en quelque chose d'utile je dirais) – hakre
Nous pouvons utiliser le twitter Rest api pour obtenir les tweets de l'utilisateur particulier. Vous pouvez télécharger la source de Display Tweets of a particular user in an Android
activity_main.xml
<RelativeLayout android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:android="http://schemas.android.com/apk/res/android" >
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="40dp"
android:id="@+id/rl_menu"
android:background="@color/colorPrimaryDark">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Twitter Tweets"
android:textColor="#ffffff"
android:textSize="15dp"
android:layout_centerInParent="true"/>
</RelativeLayout>
<ListView
android:layout_width="match_parent"
android:id="@+id/lv_list"
android:layout_height="match_parent"
android:layout_below="@+id/rl_menu"></ListView>
</RelativeLayout>
MainActivity.java
package com.gettweets;
import android.app.Activity;
import android.app.ListActivity;
import android.app.ProgressDialog;
import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Base64;
import android.util.Log;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;
import com.google.gson.Gson;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.methods.HttpRequestBase;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.params.BasicHttpParams;
import org.json.JSONArray;
import org.json.JSONObject;
import java.io.*;
import java.net.URLEncoder;
import java.util.ArrayList;
/**
* Demonstrates how to use a twitter application keys to access a user's timeline
*/
public class MainActivity extends Activity {
final static String ScreenName = "Deepshikhapuri";
final static String LOG_TAG = "rnc";
ListView lv_list;
ArrayList<String> al_text = new ArrayList<>();
Adapter obj_adapter;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
lv_list = (ListView)findViewById(R.id.lv_list);
downloadTweets();
}
// download twitter timeline after first checking to see if there is a network connection
public void downloadTweets() {
ConnectivityManager connMgr = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = connMgr.getActiveNetworkInfo();
if (networkInfo != null && networkInfo.isConnected()) {
new DownloadTwitterTask().execute(ScreenName);
} else {
Toast.makeText(getApplicationContext(),"Please check your internet connection",Toast.LENGTH_SHORT).show();
}
}
// Uses an AsyncTask to download a Twitter user's timeline
private class DownloadTwitterTask extends AsyncTask<String, Void, String> {
final static String CONSUMER_KEY = "nW88XLuFSI9DEfHOX2tpleHbR";
final static String CONSUMER_SECRET = "hCg3QClZ1iLR13D3IeMvebESKmakIelp4vwFUICuj6HAfNNCer";
final static String TwitterTokenURL = "https://api.twitter.com/oauth2/token";
final static String TwitterStreamURL = "https://api.twitter.com/1.1/statuses/user_timeline.json?screen_name=";
final ProgressDialog dialog = new ProgressDialog(MainActivity.this);
@Override
protected void onPreExecute() {
super.onPreExecute();
dialog.setTitle("Loading");
dialog.setMessage("Please wait");
dialog.show();
}
@Override
protected String doInBackground(String... screenNames) {
String result = null;
if (screenNames.length > 0) {
result = getTwitterStream(screenNames[0]);
}
return result;
}
// onPostExecute convert the JSON results into a Twitter object (which is an Array list of tweets
@Override
protected void onPostExecute(String result) {
Log.e("result",result);
dialog.dismiss();
try {
JSONArray jsonArray_data = new JSONArray(result);
al_text.clear();
for (int i=0; i<jsonArray_data.length();i++){
JSONObject jsonObject = jsonArray_data.getJSONObject(i);
al_text.add(jsonObject.getString("text"));
}
}catch (Exception e){
e.printStackTrace();
}
// send the tweets to the adapter for rendering
obj_adapter= new Adapter(getApplicationContext(), al_text);
lv_list.setAdapter(obj_adapter);
}
// convert a JSON authentication object into an Authenticated object
private Authenticated jsonToAuthenticated(String rawAuthorization) {
Authenticated auth = null;
if (rawAuthorization != null && rawAuthorization.length() > 0) {
try {
Gson gson = new Gson();
auth = gson.fromJson(rawAuthorization, Authenticated.class);
} catch (IllegalStateException ex) {
// just eat the exception
}
}
return auth;
}
private String getResponseBody(HttpRequestBase request) {
StringBuilder sb = new StringBuilder();
try {
DefaultHttpClient httpClient = new DefaultHttpClient(new BasicHttpParams());
HttpResponse response = httpClient.execute(request);
int statusCode = response.getStatusLine().getStatusCode();
String reason = response.getStatusLine().getReasonPhrase();
if (statusCode == 200) {
HttpEntity entity = response.getEntity();
InputStream inputStream = entity.getContent();
BufferedReader bReader = new BufferedReader(new InputStreamReader(inputStream, "UTF-8"), 8);
String line = null;
while ((line = bReader.readLine()) != null) {
sb.append(line);
}
} else {
sb.append(reason);
}
} catch (UnsupportedEncodingException ex) {
} catch (ClientProtocolException ex1) {
} catch (IOException ex2) {
}
return sb.toString();
}
private String getTwitterStream(String screenName) {
String results = null;
// Step 1: Encode consumer key and secret
try {
// URL encode the consumer key and secret
String urlApiKey = URLEncoder.encode(CONSUMER_KEY, "UTF-8");
String urlApiSecret = URLEncoder.encode(CONSUMER_SECRET, "UTF-8");
// Concatenate the encoded consumer key, a colon character, and the
// encoded consumer secret
String combined = urlApiKey + ":" + urlApiSecret;
// Base64 encode the string
String base64Encoded = Base64.encodeToString(combined.getBytes(), Base64.NO_WRAP);
// Step 2: Obtain a bearer token
HttpPost httpPost = new HttpPost(TwitterTokenURL);
httpPost.setHeader("Authorization", "Basic " + base64Encoded);
httpPost.setHeader("Content-Type", "application/x-www-form-urlencoded;charset=UTF-8");
httpPost.setEntity(new StringEntity("grant_type=client_credentials"));
String rawAuthorization = getResponseBody(httpPost);
Authenticated auth = jsonToAuthenticated(rawAuthorization);
// Applications should verify that the value associated with the
// token_type key of the returned object is bearer
if (auth != null && auth.token_type.equals("bearer")) {
// Step 3: Authenticate API requests with bearer token
HttpGet httpGet = new HttpGet(TwitterStreamURL + screenName);
// construct a normal HTTPS request and include an Authorization
// header with the value of Bearer <>
httpGet.setHeader("Authorization", "Bearer " + auth.access_token);
httpGet.setHeader("Content-Type", "application/json");
// update the results with the body of the response
results = getResponseBody(httpGet);
}
} catch (UnsupportedEncodingException ex) {
} catch (IllegalStateException ex1) {
}
return results;
}
}
}
Authenticated.java com.gettweets de paquet;
public class Authenticated {
String token_type;
String access_token;
}
adapter_layout.xml
<RelativeLayout android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:android="http://schemas.android.com/apk/res/android">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/tv_text"
android:textSize="18dp"
android:layout_margin="10dp"
android:textColor="#000000"/>
</RelativeLayout>
Adapter.java
package com.gettweets;
import android.content.Context;
import android.graphics.Typeface;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.TextView;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
public class Adapter extends ArrayAdapter<String> {
Context context;
ViewHolder viewHolder;
ArrayList<String> al_newslist=new ArrayList<>();
public Adapter(Context context, ArrayList<String> al_newslist) {
super(context, R.layout.adapter_layout, al_newslist);
this.al_newslist=al_newslist;
this.context=context;
}
@Override
public int getCount() {
Log.e("ADAPTER LIST SIZE",al_newslist.size()+"");
return al_newslist.size();
}
@Override
public int getItemViewType(int position) {
return position;
}
@Override
public int getViewTypeCount() {
if (al_newslist.size() > 0) {
return al_newslist.size();
} else {
return 1;
}
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
if (convertView == null) {
viewHolder = new ViewHolder();
convertView = LayoutInflater.from(getContext()).inflate(R.layout.adapter_layout, parent, false);
viewHolder.tv_name = (TextView) convertView.findViewById(R.id.tv_text);
convertView.setTag(viewHolder);
} else {
viewHolder = (ViewHolder) convertView.getTag();
}
viewHolder.tv_name.setText(al_newslist.get(position));
return convertView;
}
private static class ViewHolder {
TextView tv_name;
}
}
- 1. gratter les tweets entiers d'un utilisateur
- 2. YQL pour les tweets de Twitter suiveurs
- 3. Recherche Twitter tweets par #topic avec un utilisateur distinct
- 4. Twitter API: Comment rechercher uniquement les tweets géolocalisés
- 5. API Twitter - comment créer de nouveaux tweets
- 6. Twitter - API de streaming pour la surveillance mondiale des tweets?
- 7. Twitter API appel retweets_of_me
- 8. Existe-t-il un moyen d'obtenir tous les tweets de Twitter pour un utilisateur spécifique?
- 9. trouver des tweets mentionnant n'importe quel utilisateur de Twitter arbitraire
- 10. Diffusion de plusieurs tweets - provenant de plusieurs utilisateurs? - Twitter API
- 11. Twitter Nouvelle fonctionnalité de tweets?
- 12. Comment afficher les tweets récents d'un groupe d'utilisateurs sur le site Web ASP.Net?
- 13. comment puis-je tirer les messages publics récents dans twitter
- 14. Comment faire pour obtenir Twitter tweets fait par moi avec une demande HTTP
- 15. Twitter streaming api - comment lire les retweets
- 16. Création d'un flux Twitter séparé pour tous les tweets @ -mentionnés
- 17. Obtenir tous les tweets en majuscules
- 18. Twitter concours ~ sauver des tweets (PHP & MySQL)
- 19. Pouvez-vous stocker localement les tweets de l'API twitter?
- 20. twitter problème api
- 21. problème recherche Twitter api
- 22. Comment puis-je utiliser l'API Twitter pour obtenir des tweets pour un utilisateur et une période spécifiques?
- 23. Twitter Api pour .NETApplications
- 24. facebook, Myspace, Twitter API pour obtenir un fil de message
- 25. PHP API Twitter - Comment tirer dans les tweets de plusieurs utilisateurs?
- 26. Afficher tous les tweets qui sont sur la page du compte Twitter d'un utilisateur
- 27. Twitter statuts api/détruire api 401 erreur
- 28. API ColdFusion/OAuth/Twitter
- 29. Twitter Top Tweets comme plugin jQuery
- 30. Nouvelle API de twitter
Quelle langue utilisez-vous? – Tim
Il s'avère que je peux faire un appel http direct pour obtenir cette information. http://api.twitter.com/1/statuses/user_timeline.json?screen_name=noradio&count=5 – user330973
Voici un lien où vous trouverez un code pour sélectionner les tweets en utilisant l'API twitter 1.1 http: // stackoverflow.com/questions/12916539/simple-php-exemple-retrieving-utilisateur-timeline-avec-twitter-api-version-1-1 – lackovic10