问题
I want to get trends from Twitter. Can any one help me with that please.I have done login using login button
and got active session also now trouble is how to get trending hash tags.
回答1:
https://dev.twitter.com/rest/reference/get/trends/place
example request:
https://api.twitter.com/1.1/trends/place.json?id=1
where id is WOEID - The Yahoo! Where On Earth ID of the location
for global : 1
for india : 23424975
accesing twitterapi needs a Authorization as a header.
public class ConstantsUtils {
public static final String URL_ROOT_TWITTER_API = "https://api.twitter.com";
public static final String URL_SEARCH = URL_ROOT_TWITTER_API + "/1.1/search/tweets.json?q=";
public static final String URL_AUTHENTICATION = URL_ROOT_TWITTER_API + "/oauth2/token";
public static final String URL_INDIA_TRENDING ="https://api.twitter.com/1.1/trends/place.json?id=23424977";
public static final String CONSUMER_KEY = "your key";
public static final String CONSUMER_SECRET = "your key";
}
for getting Authorization Token
public static final String TAG = "TwitterUtils";
public static String appAuthentication() {
HttpURLConnection httpConnection = null;
OutputStream outputStream = null;
BufferedReader bufferedReader = null;
StringBuilder response = null;
try {
URL url = new URL(ConstantsUtils.URL_AUTHENTICATION);
httpConnection = (HttpURLConnection) url.openConnection();
httpConnection.setRequestMethod("POST");
httpConnection.setDoOutput(true);
httpConnection.setDoInput(true);
String accessCredential = ConstantsUtils.CONSUMER_KEY + ":"
+ ConstantsUtils.CONSUMER_SECRET;
String authorization = "Basic "
+ Base64.encodeToString(accessCredential.getBytes(),
Base64.NO_WRAP);
String param = "grant_type=client_credentials";
httpConnection.addRequestProperty("Authorization", authorization);
httpConnection.setRequestProperty("Content-Type",
"application/x-www-form-urlencoded;charset=UTF-8");
httpConnection.connect();
outputStream = httpConnection.getOutputStream();
outputStream.write(param.getBytes());
outputStream.flush();
outputStream.close();
// int statusCode = httpConnection.getResponseCode();
// String reason =httpConnection.getResponseMessage();
bufferedReader = new BufferedReader(new InputStreamReader(
httpConnection.getInputStream()));
String line;
response = new StringBuilder();
while ((line = bufferedReader.readLine()) != null) {
response.append(line);
}
Log.d(TAG,
"POST response code: "
+ String.valueOf(httpConnection.getResponseCode()));
Log.d(TAG, "JSON response: " + response.toString());
} catch (Exception e) {
Log.e(TAG, "POST error: " + Log.getStackTraceString(e));
} finally {
if (httpConnection != null) {
httpConnection.disconnect();
}
}
return response.toString();
}
For getting trends .
public static String getTimelineForSearchTerm(String twitt_url,
Context context) {
HttpURLConnection httpConnection = null;
BufferedReader bufferedReader = null;
StringBuilder response = new StringBuilder();
try {
URL url = new URL(ConstantsUtils.URL_INDIA_TRENDING);
httpConnection = (HttpURLConnection) url.openConnection();
httpConnection.setRequestMethod("GET");
String jsonString = appAuthentication();
JSONObject jsonObjectDocument = new JSONObject(jsonString);
String token = jsonObjectDocument.getString("token_type") + " "
+ jsonObjectDocument.getString("access_token");
httpConnection.setRequestProperty("Authorization", token);
httpConnection.setRequestProperty("Authorization", token);
httpConnection.setRequestProperty("Content-Type",
"application/json");
httpConnection.connect();
bufferedReader = new BufferedReader(new InputStreamReader(
httpConnection.getInputStream()));
String line;
while ((line = bufferedReader.readLine()) != null) {
response.append(line);
}
Log.d(TAG,
"GET response code: "
+ String.valueOf(httpConnection
.getResponseCode()));
Log.d(TAG, "JSON response: " + response.toString());
} catch (Exception e) {
Log.e(TAG, "GET error: " + Log.getStackTraceString(e));
} finally {
if (httpConnection != null) {
httpConnection.disconnect();
}
}
}
return response.toString();
}
and for getting yahoo WOEID just pass your location latitude and longitude.
http://where.yahooapis.com/v1/places.q('"
+ latitude
+ ","
+ longitude
+ "')?appid=yourappid&format=json"
please read about getting authorizing requests and getting authorization header
https://dev.twitter.com/oauth
https://dev.twitter.com/oauth/application-only
https://dev.twitter.com/oauth/overview/authorizing-requests
来源:https://stackoverflow.com/questions/35504566/android-how-to-get-trends-from-twitter