twitter4j getOauthAccessToken donnant exception
-
22-10-2019 - |
Question
Je tente d'obtenir l'accès d'un utilisateur jeton à l'aide twitter4j dans mon projet AppEngine. Mon code est ci-dessous
HttpSession session = req.getSession();
String tokenCopy = (String) session
.getAttribute(Constants.TOKEN_SESSION_KEY);
String tokenSecretCopy = (String) session
.getAttribute(Constants.TOKENSECRET_SESSION_KEY);
String oauth_token = req.getParameter("oauth_token");
//The above is the same as the tokenCopy, verified by printing.
String oauth_verifier = req.getParameter("oauth_verifier");
Twitter twitter = new TwitterFactory().getInstance();
twitter.setOAuthConsumer(Constants.CONSUMER_KEY,
Constants.CONSUMER_SECRET);
String extraHTML = "NOTHING\n";
try {
AccessToken accessToken;
accessToken = twitter
.getOAuthAccessToken(tokenCopy, oauth_verifier);
// accessToken = twitter.getOAuthAccessToken(oauth_verifier);
// accessToken = twitter.getOAuthAccessToken();
String accessTokenStr = accessToken.getToken();
String accessTokenSecret = accessToken.getTokenSecret();
extraHTML = "<p>accessToken = " + accessTokenStr
+ ", accessTokenSecret = " + accessTokenSecret + "</p>\n";
// TODO latertwitter.setOAuthAccessToken(accessToken);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
extraHTML = "<pre>" + e.getMessage() + "</pre>\n";
}
Malheureusement, quand mes courses de code, je reçois toujours l'exception
401:Authentication credentials (https://dev.twitter.com/docs/auth) were missing or
incorrect. Ensure that you have set valid conumer key/secret, access token/secret,
and the system clock in in sync.
Je sais que mon CONSUMER_KEY
et CONSUMER_SECRET
sont corrects (je les ai utilisés pour créer le twitter auth url et qui fonctionne bien). Qu'est-ce que j'oublie ici? Dois-je être passer quelque chose d'autre à l'appel à getOAuthAccessToken()
?
Merci.
La solution
J'utilise l'objet RequestToken
, au lieu de String
, tout le reste regarde même.
Je veux dire que quand je me prépare URL d'authentification, je fais ce qui suit:
RequestToken requestToken = twitter.getOAuthRequestToken(callbackUrl);
session.setAttribute(Constants.TOKEN_SESSION_KEY, requestToken);
et au lieu de la ligne de # 2 de votre code, il sera:
RequestToken tokenCopy = (RequestToken) session.getAttribute(Constants.TOKEN_SESSION_KEY);
Tout le reste semble correct.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow