Pregunta

Estoy tratando de estado de actualización en twitter usando Twitter4J. Todo funciona bien en el servidor local, pero cuando trato de hacerlo en el servidor me sale error de autorización:

  

401: Las credenciales de autenticación faltaban o incorrecta.   { "Error": "no válido \ / nonce utilizado", "solicitud": "\ / 1 \ / estados \ /update.json"}   TwitterException {ExceptionCode = [15bb6564-00e4d61f], statusCode = 401, RetryAfter = 0, rateLimitStatus = null, version = 2.1.7-SNAPSHOT (construcción: 6498f401635aacf3388891cc5140b2086ff3f8aa)}

I generado token de acceso para un usuario utilizando el método de "PIN" en el servidor local. Creo que no debería importar dónde se haya generado, los valores accessToken.getToken() y accessToken.getTokenSecret() no deben depender de qué máquina que las dirigen, deben trabajar en cualquier lugar, ¿verdad?

¿Qué significa este mensaje de error media? No entiendo "usado nonce" parte.

Actualizar

Ok algo está realmente en mal lugar. Estoy tratando de generar token de acceso en el servidor y no puedo siquiera llegan a generar URL autorización para mí:

Twitter twitter = new TwitterFactory().getInstance();
twitter.setOAuthConsumer("twitterConsumerKey", "twitterConsumerSecret");

RequestToken requestToken = twitter.getOAuthRequestToken();
System.out.println(requestToken.getAuthorizationURL());

Esta falla con:

401:Authentication credentials were missing or incorrect.
Failed to validate oauth signature and token
TwitterException{exceptionCode=[68a00bf1-d29b9452], statusCode=401, retryAfter=0, rateLimitStatus=null, version=2.1.7-SNAPSHOT(build: 6498f401635aacf3388891cc5140b2086ff3f8aa)}
at twitter4j.internal.http.HttpClientImpl.request(HttpClientImpl.java:308)
        at twitter4j.internal.http.HttpClientWrapper.request(HttpClientWrapper.java:72)
        at twitter4j.internal.http.HttpClientWrapper.post(HttpClientWrapper.java:103)
        at twitter4j.http.OAuthAuthorization.getOAuthRequestToken(OAuthAuthorization.java:124)
        at twitter4j.TwitterOAuthSupportBaseImpl.getOAuthRequestToken(TwitterOAuthSupportBaseImpl.java:87)
        at twitter4j.Twitter.getOAuthRequestToken(Twitter.java:54)
        at twitter4j.TwitterOAuthSupportBaseImpl.getOAuthRequestToken(TwitterOAuthSupportBaseImpl.java:80)
        at twitter4j.Twitter.getOAuthRequestToken(Twitter.java:54)

En localhost todo funciona bien.

¿Fue útil?

Solución

A la semana y algunas canas más tarde resultó que el problema estaba en la hora local en un servidor que estaba apagado. Alguien hizo un gran trabajo con los mensajes de error claros en Twitter.

Otros consejos

A nonce es un valor que está diseñado para ser utilizado una vez.

Mi conjetura es que el código que está utilizando para generar un nonce es el ahorro de la nonce y tratando de volver a utilizarlo.

No estoy familiarizado con la biblioteca Twitter4J, pero me gustaría comprobar y asegurarse de que está generando un nuevo valor de uso único para cada solicitud.

En sus "401: Las credenciales de autenticación se encuentra o incorrecto" error. Asegúrese de que también incluyen el pasador verificador con la solicitud como parte de la base de firmas.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top