【问题标题】:Right way to use twitter4j in appengine在 appengine 中使用 twitter4j 的正确方法
【发布时间】:2010-11-22 01:48:12
【问题描述】:

我正在练习制作一个网络应用程序,该应用程序试图读取用户的 Twitter 个人资料、显示他/她的朋友并显示他/她的照片。 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 变量存储在 会话,所以当 twitter 重定向到回调 url 时我可以访问它,但显然它是不允许的。

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

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

【问题讨论】:

    标签: java google-app-engine twitter


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

      您可以将数据存储在session 中。 Google App Engine 支持这一点,但you need to enable it

      【讨论】:

      猜你喜欢
      • 2016-08-11
      • 1970-01-01
      • 2023-03-21
      • 2017-02-17
      • 2019-02-08
      • 2012-02-02
      • 2014-01-20
      • 2018-12-28
      • 2011-03-06
      相关资源
      最近更新 更多