我有一个在服务器上运行的应用程序,使用流式api侦听各种推文,然后偶尔发送推文。这使用旧的twitter身份验证系统工作正常,但使用OAuth有点复杂。
我可以成功启动应用程序,我的浏览器会打开Twitter的OAuth页面。如果我输入PIN,应用程序运行正常,但我需要能够无人值守地重新启动应用程序。 Twitter的OAuth常见问题http://dev.twitter.com/pages/oauth_faq表示令牌永不过期,所以我想做的是每次应用程序启动时重新使用授权令牌。
我该怎么做?或者还有另一种授权方式吗?
答案 0 :(得分:1)
我会回答我自己的问题,因为解决方案非常简单。
如本页http://dev.twitter.com/pages/oauth_single_token所述,如果您正在构建具有单用户用例的应用程序,则可以从Twitter上的应用程序控制面板检索永久访问令牌和访问令牌机密。在“应用程序详细信息”页面中,单击“我的访问令牌”链接。
通过OAuthSignPostClient类读取我注意到默认的jtwitter实现使用以下方法签名:
public OAuthSignpostClient(String consumerKey, String consumerSecret,
String callbackUrl)
但它也可以使用:
调用public OAuthSignpostClient(String consumerKey, String consumerSecret,
String accessToken, String accessTokenSecret)
所以我的客户端应用代码已更改为:
OAuthSignpostClient client = new OAuthSignpostClient(MY_OAUTH_KEY,
MY_OAUTH_SECRET, "oob");
为:
OAuthSignpostClient client = new OAuthSignpostClient(MY_OAUTH_KEY,
MY_OAUTH_SECRET, MY_ACCESS_TOKEN, MY_ACCESS_TOKEN_SECRET);
一切都很好。