java - 在 appengine 中使用 twitter4j 的正确方法

标签 java google-app-engine twitter

我正在练习制作一个网络应用程序,该应用程序会尝试读取用户的 Twitter 个人资料、显示他/她的 friend 并显示他/她的照片。 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,以便用户可以单击它。那行得通 很远,但在那之后我已经被困住了! :)

我不太确定在哪里设置回调 URL。我应该将它设置为同一个 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,它是回调 url)

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

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

显然所有的都失败了。想知道这样做的正确方法。谢谢! :)

最佳答案

我想出了一个在谷歌应用引擎中使用 Twitter4j + Oauth 的技巧。我写了关于它的博客here .

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

另一件事,我还没有解决的是为什么 Twitter 的图标在重定向到回调 url 后出现。我打算尽快解决这个问题并优化方法。非常欢迎提出意见和建议!

关于java - 在 appengine 中使用 twitter4j 的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1318840/

相关文章:

java - NoClassDefFoundError com/google/api/services/storage/Storage$Builder

android - 百分号导致 Twitter 应用程序崩溃

java - 位图在 SurfaceView 上多次绘制

php - 支持 PHP 7 的 Google App Engine

java - Android 比例动画 - 反转问题

python - 在 python 中为谷歌应用引擎生成发现文档时找不到模块

R twitter 经纬度显示 NA

python - Python 2.7 中的 urllib.request

java - J2ME 中的人脸检测

java - Wicket 口 : how to set checked value in CheckBoxMultipleChoice