[英]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,它是回调网址)
我尝试在会话中存储twitter和requestToken变量,这样我就可以在twitter重定向到回调网址时访问它,但显然它是不允许的。
我还尝试将twitter和请求令牌保存到数据存储区,但后者不允许存储RequestToken类型。
显然所有人都失败了。 想知道正确的方法来做到这一点。 谢谢! :)
我在谷歌应用引擎中使用了Twitter4j + Oauth。 我在这里写博客。
尽管此代码有效,但它可能不是使用Twitter4j和Oauth的正确方法(尽管它确实适用于appengine)。 它没有经过优化,它绝对不是最好的方式,为了简洁起见,它实际上充斥着不良做法! 在我的真实应用程序中虽然我已经重构了那些代码味道。
另一件事,我还没有解决为什么Twitter的图标在重定向到回调网址后显示的原因。 我打算尽快开展这项工作并优化方法。 欢迎提出意见和建议!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.