3 Stimmen

Der richtige Weg zur Verwendung von twitter4j in appengine

Ich übe gerade, eine Web-App zu erstellen, die versucht, das Twitter-Profil des Benutzers zu lesen, seine Freunde anzuzeigen und sein Bild zu zeigen. Das Code-Beispiel auf der Twitter4j-Website geht:

public static void main(String args[]) thrwos Exception{
   Twitter twitter = new Twitter();
   twitter.setOAuthConsumer("[consumer key]", "[consumer secret]");
   RequestToken requestToken = twitter.getOAuthRequestToken();
   AccessToken accessToken = null;
   BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
   while (null == accessToken) {
        System.out.println("Open the following URL 
           and grant access to your account:");
        System.out.println(requestToken.getAuthorizationURL());
        System.out.print("Hit enter when it's done.[Enter]:");
        br.readLine();
        try{
          accessToken = requestToken.getAccessToken();
        } catch (TwitterException te) {
        if(401 == te.getStatusCode()){
        System.out.println("Unable to get the access token.");
        }else{
         te.printStackTrace();
       }
  }
 }
}

Was ich tue, ist in einem Servlet, nennen wir es IndexServlet Ich habe den folgenden Code:

   Twitter twitter = new Twitter();
   twitter.setOAuthConsumer("[consumer key]", "[consumer secret]");
   RequestToken requestToken = twitter.getOAuthRequestToken();
   String authUrl = requestToken.getAuthorizationURL()

und dann übergebe ich die authUrl an ein jsp, damit der Benutzer darauf klicken kann. Das funktioniert so aber danach hänge ich schon fest :)

Ich bin mir nicht ganz sicher, wo ich die Rückruf-URL einstellen soll. Sollte ich es auf das gleiche Servlet setzen? Das Problem dabei ist, dass ich dieselben twitter- und requestToken-Variablen haben sollte wie der erste Code mit der main-Methode, damit ich dies tun kann:

accessToken = requestToken.getAccessToken();
Status status = twitter.updateStatus(some argument here);

Aber das Setzen der Callback-URL auf das IndexServlet ruft den Code auf, der den Twitter-Konsumenten einrichtet. Ich könnte wahrscheinlich eine Möglichkeit finden, dies zu umgehen, indem ich ein Flag wie

if (already setup) {
   accessToken = requestToken.getAccessToken();
   Status status = twitter.updateStatus(some argument here);
} 

aber ich denke, das ist unschön.

Was ich versucht habe, ist (unter Verwendung eines zweiten Servlets, das die Callback-Url ist)

  1. Ich habe versucht, die Variablen twitter und requestToken in der Sitzung zu speichern, damit ich darauf zugreifen kann, wenn Twitter auf die Callback-URL umleitet, aber anscheinend ist das nicht erlaubt.

  2. Ich habe auch versucht, sowohl Twitter als auch RequestToken im Datenspeicher zu speichern, aber letzteres lässt die Speicherung von RequestToken-Typen nicht zu.

Offenbar sind also alle gescheitert. Ich habe mich gefragt, wie man das richtig macht. Danke! :)

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X