2012-07-16 20 views
10

Intentando integrar mi aplicación web con Twitter usando twitter4j lib.
He registrado mi aplicación en el sitio de Twitter y obtuve los valores Consumer key y Consumer secret.
Nada especial, estándar OAuth paso.Integración de Twitter: clave de consumidor/par secreto ya establecido

código:

public class TwitterService { 
    private final String CONSUMER_KEY = "xxx"; 
    private final String CONSUMER_SECRET = "yyy"; 

    public String fav() { 
     Twitter twitter = TwitterFactory.getSingleton(); 
     twitter.setOAuthConsumer(CONSUMER_KEY, CONSUMER_SECRET); 
... 

excepción:

Caused by: java.lang.IllegalStateException: consumer key/secret pair already set. 

que tiene no más de configuración para key y secret, cualquier archivo .properties u otro.

EDIT:

línea comentando twitter.setOAuthConsumer(CONSUMER_KEY, CONSUMER_SECRET); provoca excepción:

java.lang.IllegalStateException: OAuth consumer key/secret combination not supplied 

Respuesta

30

Al observar tanto el código como la documentación, parece que no se recomienda su método para instanciar una instancia de Twitter. Si desea proporcionar la configuración mediante programación (y no usar propiedades), parece que necesita suministrar un Configuration al TwitterFactory.

 
... 
ConfigurationBuilder builder = new ConfigurationBuilder(); 
builder.setOAuthConsumerKey(CONSUMER_KEY); 
builder.setOAuthConsumerSecret(CONSUMER_SECRET); 
Configuration configuration = builder.build(); 
TwitterFactory factory = new TwitterFactory(configuration); 
Twitter twitter = factory.getInstance(); 
... 

El singleton proporcionada por una fábrica que no ha sido suministrado con una configuración por defecto a usar un Authorization aplicación respaldado por una configuración PropertyConfiguration. Si no hay un archivo de propiedades, se ve como y no debería crear una instancia de auth OAuthAuthorization, que es lo que causaría la excepción que está viendo. Pero PropertyConfiguration busca en el archivo CLASSPATH completo un archivo de propiedades apropiado, por lo que tal vez haya pasado por alto uno. Usted podría intentar registrar la clave y el secreto derecha después de conseguir la instancia Twitter para ver lo que son conjunto a:

 
System.out.println("key:" + twitter.getConfiguration().getOAuthConsumerKey()); 
System.out.println("secret: " + twitter.getConfiguration().getOAuthConsumerSecret()); 
+1

bonito, gracias Araxia, que funciona para mí – sergionni

+0

grt work, thx ..! –

0

Mi impresión es que se está configurando las variables finales privados y luego twitter.setOAuthConsumer() está tratando de hacer lo mismo . Solo deberías necesitar uno o el otro. ¿Has intentado comentar la línea twitter.setOAuthConsumer()?

El Docs explica la forma "preferida" de configurar estos.

+0

mí ver sección EDIT, please.Got excepción si comentado – sergionni

Cuestiones relacionadas