2013-07-31 5 views
1

J'y suis allé depuis le week-end et je suis dans une impasse. Je suis assez novice en programmation et je suspecte que je suis dans la tête parce que j'ai lu tous les liens sous «Questions similaires» et que ça ne s'applique pas ou que je ne comprends plus. J'utilise l'API Twitter4j et j'ai travaillé à partir de l'exemple de code n °Android, Twitter4j, REST 1.1 - Comment terminer le processus OAuth?

7 sur le site Web twitter4j sur le support OAuth au http://twitter4j.org/en/code-examples.html. En tant que projet de développement de compétences, je veux créer une application de fans de célébrités Android qui téléchargera la chronologie du compte public de la célébrité. L'objectif est d'exécuter un téléchargement chronologique de tous les tweets. Je ne veux pas que l'utilisateur se connecte à Twitter avec cette application ou poster des tweets. L'application télécharge simplement une chronologie en arrière-plan et affiche les tweets, probablement dans une vue de liste.

Mon code n'exécute pas la ligne suivante. Il semble juste rester là à attendre que quelque chose se produise. RequestToken requestToken = twitter.getOAuthRequestToken();

J'ai les permissions Internet dans le manifeste. À ce stade, je suis tellement confus, je ne sais même pas si j'ai enregistré mon application correctement. J'ai les quatre clés (consommateur, secret du consommateur, accès et secret d'accès).

Réglages

-Site: fait quelque chose

-Demande Type: Lecture seule

URL -Callback: laissé vide

-I n'a pas opté pour " Connectez-vous avec Twitter. "

OAuth outil

-Demande Type: GET

URI -Demande: https://api.twitter.com/1/ (probablement faux)

Voici mon code:

public class TwitterActivity extends Activity 
{ 
    Button mButtonTweets; 
    String JSONString = null; 
    TextView JSONContent; 

class GetTwitterTimeline extends AsyncTask<Void, String, String> 
{ 
    @Override 
    protected String doInBackground(Void... params) 
    { 
     try 
     { 
      ConfigurationBuilder cb = new ConfigurationBuilder(); 
      cb.setDebugEnabled(true) 
      .setOAuthConsumerKey("") 
      .setOAuthConsumerSecret("") 
      .setOAuthAccessToken("") 
      .setOAuthAccessTokenSecret(""); 
      TwitterFactory tf = new TwitterFactory(cb.build()); 
      Twitter twitter = tf.getInstance(); 

      try 
      { 
       RequestToken requestToken = twitter.getOAuthRequestToken(); 

       AccessToken accessToken = null; 

       while (accessToken == null) 
       { 
        onProgressUpdate(requestToken.getAuthenticationURL()); 

        try 
        { 
         accessToken = twitter.getOAuthAccessToken(); 
        }//try 
        catch(TwitterException te) 
        { 
         if (te.getStatusCode() == 401) 
         { 
          onProgressUpdate("Unable to get the access token"); 
         }//if 
         else 
         { 
          te.printStackTrace(); 
         }//else 
        }//catch 
       }//while 
       onProgressUpdate("Got Access Token"); 
       onProgressUpdate("Access Token: " + accessToken.getToken()); 
       onProgressUpdate("Access Token Secret: " + accessToken.getTokenSecret()); 
      }//try 
      catch (IllegalStateException ie) 
      { 
       if(!twitter.getAuthorization().isEnabled()) 
       { 
        onProgressUpdate("OAuth consumer key/secret is not set."); 
       }//if 
      }//catch 
     }//try 
     catch (TwitterException te) 
     { 
      te.printStackTrace(); 
      onProgressUpdate("Failed to get timeline"); 
     }//catch 

     String JSONString = "JSON content will go here"; 

     return JSONString; 
    }//doInBackground 

    protected void onProgressUpdate(String logEntry) 
    { 
     Log.d("twitter4j", logEntry); 
    } 

    @Override 
    protected void onPostExecute(String jsonString) 
    { 
     JSONString = jsonString; 
    } 

}//end inner class 

@Override 
protected void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.layout_twitter); 

    new GetTwitterTimeline().execute(); 

    JSONContent = (TextView) findViewById(R.id.textview_tweets); 

    mButtonTweets = (Button) findViewById(R.id.button_tweets); 
    mButtonTweets.setOnClickListener(new OnClickListener() 
    { 
     @Override 
     public void onClick(View v) 
     { 
      JSONContent.setText(JSONString); 
     } 
    }); 

} 
} 

Répondre

1

API Twitter a été mis à jour. Donc Demande URI: https://api.twitter.com/1/ ne fonctionnera pas.

AFAIK de la façon dont vous essayez de rendre l'application ne fonctionne pas. Vous avez besoin d'une sorte d'authentification. J'ai également jeté une de mes applications après ce changement d'API. :(

Lire le lien suivant:..

https://dev.twitter.com/docs/api/1.1/overview

+0

fida, j'apprécie les commentaires que je l'ai essayé la lecture dev.twitter.com et il me embrouille un peu plus j'ai aussi essayé la lecture Stack Overflow, d'autres sites que Google renvoie, et les API twitter4j et Android.Je deviens juste plus confus.Quand vous regardez mon code, voyez-vous des problèmes évidents? –

+0

@JamesRogers: AFAIK votre code est pour la connexion au compte Twitter et faire des choses différentes Pas pour tirer des messages publics.La lecture des messages publics via l'analyse syntaxique JSON était possible dans l'ancienne API.Pas la dernière API.Twitter a fermé la porte.:( Vous devez ajouter l'authentification de connexion pour les utilisateurs afin de pouvoir voir les articles et autres travaux en cliquant sur le lien suivant: https://dev.twitter.com/docs/api/1.1/get/statuses/user_timeline – fida1989