Domanda

Sto cercando di aggiornare lo stato su Twitter usando twitter4j. Tutto funziona bene su localhost, ma quando provo a farlo nel server ottengo errore di autorizzazione:

  

401: Le credenziali di autenticazione inesistenti o errati.   { "Errore": "non valido \ / nonce usato", "richiesta": "\ / 1 \ / stati \ /update.json"}   TwitterException {ExceptionCode = [15bb6564-00e4d61f], statusCode = 401, retryAfter = 0, rateLimitStatus = null, versione = 2.1.7-SNAPSHOT (accumulo: 6498f401635aacf3388891cc5140b2086ff3f8aa)}

I generato token di accesso per un utente utilizzando il metodo "PIN" a localhost. Penso che non dovrebbe importa dove è stato generato, valori accessToken.getToken() e accessToken.getTokenSecret() non dovrebbero dipendere da quale macchina li corro, dovrebbero lavorare ovunque, giusto?

Cosa significa questo messaggio di errore media? Non capisco parte "usato nonce".

Aggiorna

Ok qualcosa sta veramente incasinato da qualche parte. Sto cercando di generare token di accesso su un server di ora e non riesco nemmeno a farlo a generare URL autorizzazione per me:

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

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

Questo viene a mancare 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)

Il localhost tutto funziona bene.

È stato utile?

Soluzione

Una settimana e qualche capello bianco in seguito si è scoperto che il problema era nel tempo locale su un server che è stato spento. Qualcuno ha fatto un ottimo lavoro con i messaggi di errore chiari su Twitter.

Altri suggerimenti

Un nonce è un valore che è stato progettato per essere utilizzato una sola volta.

La mia ipotesi è che il codice si utilizza per generare un nonce è salvare il nonce e cercando di riutilizzarlo.

Non ho una conoscenza con la libreria twitter4j, ma vorrei controllare e assicurarsi che si sta generando un nuovo nonce per ogni richiesta.

Per i vostri "401: Le credenziali di autenticazione inesistenti o errati" errore. Assicurati di includere anche il perno verificatore con la richiesta come parte della base della firma.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top