http://twitter4j.org/en/code-examples.html - 如何在 OAuth 身份验证期间静态提供 Twitter PIN,代码示例讨论了提供 PIN(如果它已经可用)。
我们的应用程序是一个独立的 Java 应用程序,并且更愿意通过属性文件传递凭据,而无需任何人工干预。
http://twitter4j.org/en/code-examples.html - 如何在 OAuth 身份验证期间静态提供 Twitter PIN,代码示例讨论了提供 PIN(如果它已经可用)。
我们的应用程序是一个独立的 Java 应用程序,并且更愿意通过属性文件传递凭据,而无需任何人工干预。
Twitter 将为您提供 PIN 码。
在示例中,Twitter4J 假设有人将在 Web 浏览器中复制它提供的 URL(requestToken.getAuthorizationURL()
在第 10 行),并通过浏览器授权应用程序。之后,用户应该在示例程序中编写在其浏览器中显示的 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>
。该请求必须按照Twitter 的 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 代码。了解这个过程非常有用。
我今天花了一些时间试图弄清楚如何使用 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());
希望这可以帮助!