2010-11-10 39 views
1

J'essaie de mettre à jour le statut sur twitter en utilisant twitter4j. Tout fonctionne très bien sur localhost, mais lorsque je tente de le faire sur le serveur je reçois erreur d'autorisation:Erreur 401 en essayant de mettre à jour le statut avec twitter4j

401:Authentication credentials were missing or incorrect. {"error":"Invalid \/ used nonce","request":"\/1\/statuses\/update.json"} TwitterException{exceptionCode=[15bb6564-00e4d61f], statusCode=401, retryAfter=0, rateLimitStatus=null, version=2.1.7-SNAPSHOT(build: 6498f401635aacf3388891cc5140b2086ff3f8aa)}

I généré un jeton d'accès pour un utilisateur en utilisant la méthode « PIN » sur localhost. Je pense que cela ne devrait pas importer où il a été généré, accessToken.getToken() et accessToken.getTokenSecret() les valeurs ne devraient pas dépendre de quelle machine je les exécute, ils devraient fonctionner n'importe où, non?

Que signifie ce message d'erreur? Je ne comprends pas la partie "utilisé nonce".

MISE À JOUR

Ok quelque chose est vraiment foiré quelque part. Je suis en train de générer un jeton d'accès sur un serveur maintenant et ne peut même pas faire pour générer des URL d'autorisation pour moi:

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

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

Cela échoue avec:

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) 

Sur tout localhost fonctionne très bien.

+0

Déconseillé, de nouvelles personnes rencontrent ce sujet: essayez ce nouveau tutoriel OAuth: http://goo.gl/99vpL – Blundell

+0

Le commentaire ci-dessus est faux. Cette question est toujours entièrement valide et le tutoriel OAuth annoncé dans le commentaire ci-dessus n'a rien à voir avec la question ici. – seinecle

Répondre

4

Une semaine et quelques cheveux gris plus tard, il s'est avéré que le problème était en heure locale sur un serveur qui était éteint. Quelqu'un a fait un excellent travail avec des messages d'erreur clairs sur Twitter.

+0

J'ai la même erreur. Pourriez-vous s'il vous plaît expliquer ce qu'il faut faire pour sortir de ce problème. –

0

Un nonce est une valeur conçue pour être utilisée une seule fois. Je suppose que le code que vous utilisez pour générer un nonce est de sauvegarder le nonce et d'essayer de le réutiliser.

Je ne suis pas familier avec la bibliothèque twitter4j, mais je vérifierais et m'assurerais que vous générez un nouveau nonce pour chaque demande.

0

Pour votre "401: les informations d'authentification ont été manquantes ou incorrectes". Assurez-vous également d'inclure la broche du vérificateur avec la demande dans la base de la signature.