使用Twitter4J库实现使用twitter登录

时间:2013-05-28 07:14:47

标签: jsf twitter-oauth twitter4j

我有一个使用JSF的Web应用程序。

在我的页面上,我有一个调用doTwitterLogin()

的按钮
public void doTwitterLogin() {
    try {
        HttpServletRequest req = (HttpServletRequest) FacesContext.getCurrentInstance().getExternalContext().getRequest();
        String url = req.getRequestURL().toString();
        Twitter twitter = new TwitterFactory().getInstance();
        twitter.setOAuthConsumer("xxx", "xxx");
        RequestToken requestToken = twitter.getOAuthRequestToken(url);

        FacesContext.getCurrentInstance().getExternalContext().getSessionMap().put("requestToken_token", requestToken.getToken());
        FacesContext.getCurrentInstance().getExternalContext().getSessionMap().put("requestToken_secret", requestToken.getTokenSecret());
        FacesContext.getCurrentInstance().getExternalContext().redirect(requestToken.getAuthorizationURL());
    } catch (Exception e) {
        e.printStackTrace();
    }
}

我在RequestToken requestToken = twitter.getOAuthRequestToken(url);部分调试后得到异常。

SEVERE: 401:Authentication credentials (https://dev.twitter.com/pages/auth) were missing or incorrect. Ensure that you have set valid consumer key/secret, access token/secret, and the system clock is in sync.
<?xml version="1.0" encoding="UTF-8"?>
<hash>
  <error>Desktop applications only support the oauth_callback value 'oob'</error>
  <request>/oauth/request_token</request>
</hash>

参考:http://twitter4j.org/en/code-examples.html

1 个答案:

答案 0 :(得分:0)

您已将应用程序标记为“桌面应用程序”。您应该使用应用程序设置将其更改为Web应用程序。