我有一个客户端/服务器游戏(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/