twitter4j getOauthAccessToken给出异常



我试图在我的appengine项目中使用twitter4j获得用户的访问令牌。我的代码在

下面
    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 = "NOTHINGn";
    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";
    }
遗憾的是,当我的代码运行时,我总是得到异常
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.

我知道我的CONSUMER_KEYCONSUMER_SECRET是正确的(我用它们来创建twitter认证url,这工作得很好)。我遗漏了什么?我应该传递一些其他的东西给getOAuthAccessToken()的调用吗?

谢谢。

我使用RequestToken对象,而不是String,其他一切看起来都一样。

我的意思是当我准备认证url时,我正在做以下事情:

RequestToken requestToken = twitter.getOAuthRequestToken(callbackUrl);
session.setAttribute(Constants.TOKEN_SESSION_KEY, requestToken);

,而不是代码的第2行,它将是:

RequestToken tokenCopy = (RequestToken) session.getAttribute(Constants.TOKEN_SESSION_KEY);

最新更新