java - 如何在 Java 服务器中验证 Twitter OAuth 凭据(包括电子邮件)

标签 java ios twitter oauth twitter4j

我有一个客户端/服务器游戏(iOS 客户端,Java 服务器),其中玩家帐户与电子邮件地址相关联。客户端允许使用各自的登录 SDK 登录 Google、Facebook 和 Twitter。

为了防止客户端欺骗错误的电子邮件地址,我通过 SSL 将它们发送到服务器端来验证 oauth token ,并使用用户的凭据来验证他们确实拥有该电子邮件地址。

对于 Google 和 Facebook, token 验证(以及获取关联的电子邮件)是一个非常简单的 REST 调用。但是 Twitter 要求您创建一个签名请求,结果证明这很复杂且容易出错。幸运的是,有一个开源客户端库 twitter4j,它使我只需几行代码即可完成。

弄清楚如何使用 twitter4j 来完成这个任务有点棘手,所以我在这里记录它。

最佳答案

您将需要这些导入:

import twitter4j.Twitter;
import twitter4j.TwitterFactory;
import twitter4j.conf.Configuration;
import twitter4j.conf.ConfigurationBuilder;

当您注册您的应用程序以访问 Twitter API 时,他们会为您提供一个消费者 API key 和一个消费者 API secret 来识别您的 iOS 应用程序。您将需要以某种方式在您的 Java 服务器上使用这些。直接放到源码里最简单:

String consumerApiKey = "arglebarglearglebargle";  // oauth_consumer_key
String consumerApiSecret = "tHiSisas3cReTc0nSUm3rAp1Keypr0v1d3Dbytw1tt3r";

然后您需要从 iOS 应用发送您的 oauth 凭据:

String accessToken = "myUs3rs0aUthAcc355t0k3n";
String accessTokenSecret = "sdflkjasdflkjasdlfkjasdlfkjasldkfjlasdkfjldf";

使用您的凭据配置 twitter4j:

ConfigurationBuilder builder = new ConfigurationBuilder();
builder.setOAuthConsumerKey(consumerApiKey);
builder.setOAuthConsumerSecret(consumerApiSecret);
builder.setOAuthAccessToken(accessToken);
builder.setOAuthAccessTokenSecret(accessTokenSecret);
builder.setIncludeEmailEnabled(true);
Configuration config = builder.build();
TwitterFactory factory = new TwitterFactory(config);
Twitter twitter = factory.getInstance();

现在您可以通过 Twitter 对象调用 Twitter API。在我的例子中,我进行了一次调用来验证 oauth 凭据并获取用户的电子邮件,以便我可以根据播放器数据库进行检查:

twitter4j.User user = twitter.verifyCredentials();
String email = user.getEmail();
...

关于java - 如何在 Java 服务器中验证 Twitter OAuth 凭据(包括电子邮件),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39627475/

相关文章:

ios - 如何在objc中的字节数组中循环

ios - 是否可以在没有用户交互的情况下关闭 MFMailComposeViewController?

ios - 如何使用 javapns 将自定义属性添加到 ios 推送通知负载?

c# - 使用 C# 与 Twitter 交互的最成熟的库?

c# - 使用 ASP.NET C# 解析 JSON 中的数组

java - 项目编译后 map 不显示

java - 在 Jooq 中填充子类

java - 如何将值传递到树集中用户定义的比较函数中

java - Scala Spark MLLib NoClassDefFoundError

使用字典中的短语进行 R 情感分析