【发布时间】: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)
我尝试将 twitter 和 requestToken 变量存储在 会话,所以当 twitter 重定向到回调 url 时我可以访问它,但显然它是不允许的。
我还尝试将 twitter 和请求令牌都保存到数据存储区,但后者不允许存储 RequestToken 类型。
显然所有的都失败了。想知道正确的方法来做到这一点。谢谢! :)
【问题讨论】:
标签: java google-app-engine twitter