java - 如何在 OAuth 身份验证期间静态提供 Twitter PIN

标签 java twitter twitter4j

http://twitter4j.org/en/code-examples.html - 如何在 OAuth 身份验证期间静态提供 Twitter PIN,代码示例讨论了提供 PIN(如果其已可用)。

我们的应用程序是一个独立的 java 应用程序,并且更愿意通过属性文件传递凭据,而无需任何人工干预。

最佳答案

Twitter 将为您提供 PIN 码。

在示例中,Twitter4J 假设某人将在 Web 浏览器中复制其提供的 URL(第 10 行为 requestToken.getAuthorizationURL()),并通过浏览器对应用程序进行授权。之后,用户应该在示例程序中写入浏览器中显示的 PIN 码。

此示例有两个很大的缺点:

  • 人为干预
  • 如果 Twitter 不向您提供 PIN 码(如果您的 Twitter 应用程序的回调 URL 不是“oob”,就会发生这种情况),您将为示例程序提供哪个代码?

您必须模拟人工干预才能获取 PIN 码。不幸的是,Twitter4J 似乎没有方法来执行此操作(我在 Javadoc 中没有看到此类方法),因此您必须自己编写以下过程的代码:

  1. 检索网页的 HTML 代码 requestToken.getAuthorizationURL() .
  2. 此 HTML 页面包含一个表单,其中的一些参数将与用户名(或电子邮件)和用户密码一起发布,以获取 PIN 码。这些参数称为“oauth_token ”(您已有的临时 OAuth token )、“deny ”(如果您不想授权应用程序则使用的标签)和“authenticity_token ”。全部都在 <input> 中HTML 标签。选择它们。
  3. 模拟表单的发布。为此,您必须使用 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.)。
  4. Twitter API 将为您返回一个网页。如果授权成功,PIN 码就会在里面。不过,要小心。根据回调 URL,PIN 具有不同的名称。如果回调 URL 为“oob ”,则 PIN 码称为OAuth PIN。它是 <div id="oauth_pin"> 中某处的 4 位数字。 HTML 标签。否则,它被称为OAuth Verifier。它包含在位于 <div class="happy notice callback"> 的 URL 中。 HTML 标签。在此 URL 中,PIN 为 oauth_verifier请求字符串的。它看起来像一个 OAuth token 。

请不要犹豫,看看我的过程的第二步和第四步的网页的 HTML 代码。了解这个过程非常有用。

关于java - 如何在 OAuth 身份验证期间静态提供 Twitter PIN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12079570/

相关文章:

java - Flume Twitter流

streaming - 如何正确停止和终止 Twitter4j 流

java - Android Studio 连接到 Azure 数据库

java - 使用迭代器有什么好处?

ios - 通过互联网动态更新/发送文本到已发布应用程序的免费且简单的方法?

python - 使用 tweepy 流式传输用户的时间线和过滤的推文

twitter - 如何在我的谷歌浏览器扩展中实现 twitter Oauth

Java:如何向通过java.awt.frame实现的GUI窗口添加滚动条?

java - 如何访问 Par.Do 转换中的管道选项?

java - android twitter 4j 2.2.1 获取媒体实体