http://twitter4j.org/en/code-examples.html - 如何在OAuth身份验证期间静态提供Twitter PIN,代码示例讨论如果PIN已经可用,则提供PIN。
我们的应用程序是一个独立的Java应用程序,并且更愿意通过属性文件传递凭据而无需任何人为干预。
答案 0 :(得分:2)
Twitter将为您提供PIN码。
在这个例子中,Twitter4J假设有人会在网络浏览器中复制它给出的URL(第10行的requestToken.getAuthorizationURL()
)并通过浏览器授权应用程序。之后,用户应该在示例程序中写入其浏览器中显示的PIN码。
在这个例子中有两个很大的缺点:
oob
”,则会发生这种情况?)您必须模拟人工干预以获取PIN码。不幸的是,Twitter4J似乎没有得到这样做的方法(我没有在Javadoc中看到这样的方法)所以你必须自己编写以下过程:
requestToken.getAuthorizationURL()
。oauth_token
”(您已有的临时OAuth令牌),“deny
”(如果您不想授权应用程序时使用的标记)和“authenticity_token
”。所有这些都在<input>
HTML标记中。选择它们。POST oauth/authorize
端点。网址为https://api.twitter.com/oauth/authorize?oauth_token=<your OAuth Token>
。该请求必须在the Twitter process for Authenticating requests之后进行身份验证。这是您要发布的内容:“authenticity_token=<the form's "authenticity_token" parameter>&session[username_or_email]=<user's name or email>&session[password]=<the user's password in clear>
”。如果您未授权该应用,请在正文消息中附加“&deny=<the form's "deny" parameter>
”。您没有任何问题,因为您在属性文件中获得了凭据(session[xxx]
参数),并且您在表单中选择了其他参数(参见2。)。oob
”,则PIN码称为 OAuth PIN 。它是<div id="oauth_pin">
HTML标记中某处的4位数字。否则,它被称为 OAuth Verifier 。它包含在<div class="happy notice callback">
HTML标记中的URL中。在此URL中,PIN是请求字符串的oauth_verifier
。它看起来像一个OAuth令牌。请不要犹豫,查看我的流程第2步和第4步的网页的HTML代码。理解这个过程非常有用。
答案 1 :(得分:2)
今天我花了一些时间试图找出如何在没有用户干预的情况下使用Twitter4j库进行身份验证。我想出了以下内容:
ConfigurationBuilder conf = new ConfigurationBuilder();
conf.setOAuthConsumerKey(CONSUMER_KEY);
conf.setOAuthConsumerSecret(CONSUMER_KEY_SECRET);
conf.setOAuthAccessToken(TOKEN);
conf.setOAuthAccessTokenSecret(TOKEN_SECRET);
Twitter twitter = new TwitterFactory(conf.build()).getInstance();
通过使用ConfigurationBuilder,我现在可以自动进行身份验证。当然,您需要相应地设置CONSUMER和TOKEN键的值。以下是我验证的方法:
User user = twitter.verifyCredentials();
System.out.println("Successfully verified credentials of " + user.getScreenName());
希望这有帮助!