Question

Je suis en train de l'état de mise à jour 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:

  

401: les informations d'authentification sont manquants ou incorrects.   { "Erreur": "non valide \ / occasion nonce", "demande": "\ / 1 \ / statuts \ /update.json"}   TwitterException {ExceptionCode = [15bb6564-00e4d61f], statusCode = 401, RetryAfter = 0, rateLimitStatus = null, version = 2.1.7-SNAPSHOT (build: 6498f401635aacf3388891cc5140b2086ff3f8aa)}

I généré jeton d'accès pour un utilisateur en utilisant la méthode « PIN » sur localhost. Je pense qu'il ne devrait pas importe où il a été généré, les valeurs de accessToken.getToken() et accessToken.getTokenSecret() ne devraient pas dépendre la machine sur laquelle je les lance, ils devraient travailler partout, à droite?

Qu'est-ce que ce message d'erreur? Je ne comprends pas partie « nonce utilisé ».

UPDATE

Ok quelque chose est vraiment foiré quelque part. Je suis en train de générer jeton d'accès sur un serveur maintenant et ne peux même pas le 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());

é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)

localhost tout fonctionne bien.

Était-ce utile?

La solution

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

Autres conseils

A nonce est une valeur qui est conçu pour être utilisé une seule fois.

Je pense que le code que vous utilisez pour générer un nonce sauve le nonce et en essayant de le réutiliser.

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

Pour vos « 401: les informations d'identification d'authentification étaient manquantes ou incorrect ». Assurez-vous d'inclure également la broche de vérification à la demande dans le cadre de la base de signature.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top