Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Rodolpho de Paula

Twitter - API

Recommended Posts

Bom dia a todos,

 

Estou enviando essa mensagem, pois estou com problemas na API do Twitter com o protocolo Oauth.

Aplicativo - Java (Desktop).

 

O Twitter funciona normalmente com a API, mais o grande problema é que toda vez tenho que gerar o novo código PIN (Código Aleatório), para o Twitter abrir uma nova requisição. Existe algum possibilidade de gravar esse código em cookie para Desk.., ou algo parecido para não ficar validando o PIN toda hora?

 

Estou colocando o meu código abaixo.

 

import entidade.EntTwitter;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.net.MalformedURLException;
import java.util.ArrayList;

import oauth.signpost.exception.OAuthCommunicationException;
import oauth.signpost.exception.OAuthExpectationFailedException;
import oauth.signpost.exception.OAuthMessageSignerException;
import oauth.signpost.exception.OAuthNotAuthorizedException;
import twitter4j.Status;
import twitter4j.Twitter;
import twitter4j.TwitterException;
import twitter4j.TwitterFactory;
import twitter4j.User;

import java.net.HttpURLConnection;
import java.net.URL;

import java.util.List;
import javax.swing.JOptionPane;
import oauth.signpost.OAuth;
import oauth.signpost.OAuthConsumer;
import oauth.signpost.OAuthProvider;
import oauth.signpost.basic.DefaultOAuthConsumer;
import oauth.signpost.basic.DefaultOAuthProvider;
import oauth.signpost.signature.SignatureMethod;


public class LeitorTwitter {
 public static User u = null;
 public static BufferedImage imagem;
 public static ArrayList<EntTwitter> twitter = new ArrayList<EntTwitter>();
 public static OAuthConsumer consumer;
 public static OAuthProvider provider;
 public static String pinCode;
 public static String authUrl;

 public static void conectar() throws OAuthMessageSignerException, OAuthNotAuthorizedException, OAuthExpectationFailedException, OAuthCommunicationException, MalformedURLException, IOException{
 OAuthConsumer consumer = new DefaultOAuthConsumer("XXXXXXXXXXXXXXXXXXXXXXX","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",SignatureMethod.HMAC_SHA1);
 OAuthProvider provider = new DefaultOAuthProvider(consumer,"http://twitter.com/oauth/request_token","http://twitter.com/oauth/access_token","http://twitter.com/oauth/authorize");

 System.out.println("Fetching request token from Twitter...");
 authUrl = provider.retrieveRequestToken(OAuth.OUT_OF_BAND);
 System.out.print("Imprime o Provider " + provider);

 System.out.println("Request token: " + consumer.getToken());
 System.out.println("Token secret: " + consumer.getTokenSecret());

 System.out.println(authUrl);
 pinCode = JOptionPane.showInputDialog("Acesse o endereço:\n" + authUrl + "\nE Informe o Código PIN:");
 
 provider.retrieveAccessToken(pinCode);
 System.out.println("Access token: " + consumer.getToken());
 System.out.println("Token secret: " + consumer.getTokenSecret());

 URL url = new URL("http://twitter.com/statuses/user_timeline/XXXXXXXXXXXXX.xml");
 HttpURLConnection request = (HttpURLConnection) url.openConnection();
 consumer.sign(request);

 request.connect();
 System.out.println("Conectando...");

 System.out.println("Response: " + request.getResponseCode() + " "
 + request.getResponseMessage());
 }


 @SuppressWarnings("static-access")
 public static void geraTwitter() throws OAuthMessageSignerException, OAuthNotAuthorizedException, OAuthExpectationFailedException, OAuthCommunicationException, MalformedURLException, IOException, TwitterException {
 EntTwitter entTwitter = new EntTwitter();
 conectar();

 Twitter t = new TwitterFactory().getInstance();
 List<Status> statuses = t.getPublicTimeline();
 twitter.clear();

 for (Status s : statuses) { //roda a lista de twitters
 try {
 entTwitter = new EntTwitter();
 entTwitter.setNome(s.getUser().getName());
 entTwitter.setNome(s.getUser().getName());
 entTwitter.setMensagem(s.getText());
 entTwitter.setData(s.getCreatedAt().toString());
 entTwitter.setFoto(s.getUser().getProfileImageURL().toString());
 twitter.add(entTwitter);
 entTwitter = null;
 if (twitter.size() >= 12) { //sai se ja tiverem 12 twitters...
 break;
 }
 } catch (Exception e) {
 System.out.println("Erro ao ler twitter: " + e.getMessage());
 }

 }
 }

 public static void main(String[] args) throws OAuthMessageSignerException, OAuthNotAuthorizedException, OAuthExpectationFailedException, OAuthCommunicationException, MalformedURLException, IOException, TwitterException { /*metodo apenas para teste...*/
 geraTwitter();
 }
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

beleza? nao sei se você ja resolveu mas pode servir para alguem que esteja tendo o mesmo problema ok

 

entao, passe o objeto consumer para algum metodo que armazene o token e token secret e depois qdo abrir o aplicativo testa para ver se ja existe, se nao, solicita pin novamente. abraco e boa sorte.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.