Search code examples
androidtwitter-fabric

android: how to get trends from twitter?


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.


Solution

  • 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