Tôi sẽ cần sử dụng API nào để nhận các tweet gần đây của một người dùng cụ thể bằng tài khoản công khai?API Twitter để nhận các tweet gần đây của một người dùng cụ thể
Trả lời
Để nhận các tweet từ một người dùng cụ thể, bạn sẽ muốn sử dụng phương thức API GET statuses/user_timeline.
@AdamSack Phương pháp này không được chấp nhận. – abraham
Chỉ cần thêm '? Screen_name = USERNAME' vào cuối điểm cuối. –
5 mẩu tin mới nhất có mã 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);
Lưu ý: Tính năng này không còn hoạt động do OAuth và API phiên bản 1.1. – Jimbo
Tính đến ngày 7 tháng 5 2013, v1.0 đã bị phản đối của Twitter đã được nghỉ hưu và v1.1 là phương pháp duy nhất của truy cập vào API, sử dụng yêu cầu xác thực thông qua OAuth.
Điều này có nghĩa bạn sẽ không có thể sử dụng PHP hoàn toàn của file_get_contents()
trên riêng của nó để lấy các loại điều này - bạn cần phải viết một kịch bản mà sử dụng OAuth và Twitters v1.1 API.
I recently wrote a Stack Overflow answer để trợ giúp người mới sử dụng API twitter v1.1 và tôi đã viết một lớp học để giúp bạn dễ dàng hơn.
Bạn cần tạo tài khoản nhà phát triển, lấy cho mình một bộ khóa nhà phát triển để sử dụng trong ứng dụng của bạn và thực hiện yêu cầu được xác thực bằng OAuth. Nếu bạn đọc bài đăng ở trên, bạn sẽ thấy tôi đã tạo một simple class để cho phép bạn thực hiện việc này.
TLDR: Không thể sử dụng v1.0 nữa, sử dụng 1.1 và lớp này vì đơn giản: https://github.com/J7mbo/twitter-api-php
Bạn * có thể * sử dụng file_get_contents với OAuth. – hakre
@hakre Fixed :) – Jimbo
Việc rút ngắn cũng nằm trong lớp của bạn trên Github. Ngớ ngẩn curl bạn khốn không cần thiết nếu file_get_contents là có;) (Fix đầu tiên của tất cả các thông báo lỗi vào một cái gì đó hữu ích tôi muốn nói) – hakre
Chúng tôi có thể sử dụng api twitter Nghỉ ngơi để có được những tweet của người dùng cụ thể. Bạn có thể tải mã nguồn của 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 gói;
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. Twitter API: Cách nhận ID người dùng, người yêu thích tweet cụ thể?
- 2. bất kỳ cách nào để đếm tweet tweet của một người dùng cụ thể bằng Twitter API?
- 3. tweet của người dùng tìm kiếm Twitter API giữa các ngày
- 4. Chỉ nhận phương tiện của người dùng (ảnh) - Twitter API
- 5. Twitter Api: nhận các tweet có liên kết
- 6. twitter api nhận email người dùng
- 7. Cách hiệu quả nhất để tìm người dùng nào thích một tweet cụ thể?
- 8. PHP Twitter API - Làm thế nào để kéo nhiều người dùng tweet?
- 9. Phát trực tuyến nhiều tweet - từ nhiều người dùng? - Twitter API
- 10. Hoạt động gần đây của người dùng - PHP MySql
- 11. Tìm nạp thẻ gần đây của phương tiện truyền thông người dùng gần đây sau khi max_id
- 12. YQL cho tweet của người theo dõi twitter
- 13. Tìm kiếm Twitter (atom) API - loại trừ các tweet lại
- 14. Làm cách nào để lưu các tweet tweet từ twitter-api trong Clojure?
- 15. Truy vấn SQL để nhận hàng gần đây nhất cho từng trường hợp của một khóa cụ thể
- 16. Làm cách nào để thu thập dữ liệu các tweet lại của một người dùng nhất định?
- 17. API tìm kiếm Twitter nhiều thẻ băm hoặc người dùng
- 18. Làm cách nào để tôi có thể truy xuất tất cả các Tweet và thuộc tính cho một người dùng cụ thể bằng cách sử dụng Python?
- 19. Nhận tweets Công Twitter API 1.1
- 20. django theo dõi người dùng trực tuyến gần đây
- 21. Làm thế nào để có được địa chỉ email của người dùng twitter với twitter api
- 22. Bất kỳ cách nào để nhận email người dùng Twitter?
- 23. Làm cách nào để nhận các nhận xét gần đây nhất của Facebook?
- 24. tìm các tweet đề cập đến bất kỳ người dùng twitter tùy ý nào
- 25. Tại sao một id tweet sai được trả lại từ API twitter?
- 26. Nhận thông tin của người dùng hiện tại từ Twitter API
- 27. tweepy/twitter nhận được tất cả các tweet từ một địa điểm:
- 28. Nhận Tweet bằng Ảnh bằng cách sử dụng tìm kiếm twitter api
- 29. Nhận ảnh từ twitter home timeline API
- 30. Rails 3. Nhận cập nhật gần đây nhất
Ngôn ngữ mà bạn đang sử dụng? – Tim
Hóa ra tôi có thể thực hiện cuộc gọi http trực tiếp để nhận thông tin này. http://api.twitter.com/1/statuses/user_timeline.json?screen_name=noradio&count=5 – user330973
Đây là một liên kết nơi bạn sẽ tìm thấy một mã để chọn tweet bằng cách sử dụng twitter 1.1 API http: // stackoverflow.com/questions/12916539/simpleest-php-example-retrieving-user-timeline-với-twitter-api-version-1-1 – lackovic10