繁体   English   中英

在appengine中使用twitter4j的正确方法

[英]Right way to use twitter4j in appengine

我正在练习制作一个网络应用程序,试图阅读用户的推特个人资料,显示他/她的朋友并显示他/她的照片。 Twitter4j网站上的代码示例如下:

public static void main(String args[]) thrwos Exception{
   Twitter twitter = new Twitter();
   twitter.setOAuthConsumer("[consumer key]", "[consumer secret]");
   RequestToken requestToken = twitter.getOAuthRequestToken();
   AccessToken accessToken = null;
   BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
   while (null == accessToken) {
        System.out.println("Open the following URL 
           and grant access to your account:");
        System.out.println(requestToken.getAuthorizationURL());
        System.out.print("Hit enter when it's done.[Enter]:");
        br.readLine();
        try{
          accessToken = requestToken.getAccessToken();
        } catch (TwitterException te) {
        if(401 == te.getStatusCode()){
        System.out.println("Unable to get the access token.");
        }else{
         te.printStackTrace();
       }
  }
 }
}

我所做的是在一个servlet中,我们将它命名为IndexServlet我有以下代码:

   Twitter twitter = new Twitter();
   twitter.setOAuthConsumer("[consumer key]", "[consumer secret]");
   RequestToken requestToken = twitter.getOAuthRequestToken();
   String authUrl = requestToken.getAuthorizationURL()

然后我将authUrl传递给jsp,以便用户可以单击它。 这工作到目前为止,但在那之后我已经卡住了! :)

我不确定在哪里设置回调网址。 我应该将它设置为相同的servlet吗? 问题是我应该使用相同的twitter和requestToken变量,就像使用main方法的第一个代码一样,所以我可以这样做:

accessToken = requestToken.getAccessToken();
Status status = twitter.updateStatus(some argument here);

但是将回调URL设置为IndexServlet会调用设置twitter使用者的代码。 我可以用一个标志来绕过它

if (already setup) {
   accessToken = requestToken.getAccessToken();
   Status status = twitter.updateStatus(some argument here);
} 

但后来我觉得这很麻烦。

我试过的是(使用第二个servlet,它是回调网址)

  1. 我尝试在会话中存储twitter和requestToken变量,这样我就可以在twitter重定向到回调网址时访问它,但显然它是不允许的。

  2. 我还尝试将twitter和请求令牌保存到数据存储区,但后者不允许存储RequestToken类型。

显然所有人都失败了。 想知道正确的方法来做到这一点。 谢谢! :)

我在谷歌应用引擎中使用了Twitter4j + Oauth。 我在这里写博客。

尽管此代码有效,但它可能不是使用Twitter4j和Oauth的正确方法(尽管它确实适用于appengine)。 它没有经过优化,它绝对不是最好的方式,为了简洁起见,它实际上充斥着不良做法! 在我的真实应用程序中虽然我已经重构了那些代码味道。

另一件事,我还没有解决为什么Twitter的图标在重定向到回调网址后显示的原因。 我打算尽快开展这项工作并优化方法。 欢迎提出意见和建议!

您可以将数据存储在会话中 Google App Engine支持此功能,但您需要启用它

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM