Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/389.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/93.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Java服务器中验证Twitter OAuth凭据(包括电子邮件)_Java_Ios_Twitter_Oauth_Twitter4j - Fatal编程技术网

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

如何在Java服务器中验证Twitter OAuth凭据(包括电子邮件),java,ios,twitter,oauth,twitter4j,Java,Ios,Twitter,Oauth,Twitter4j,我有一个客户机/服务器游戏(iOS客户机、Java服务器),其中玩家帐户与电子邮件地址绑定。该客户端允许使用谷歌、Facebook和Twitter各自的登录SDK登录 为了防止客户端伪造错误的电子邮件地址,我通过SSL将oauth令牌发送到服务器端,并使用用户凭据验证它们是否确实拥有该电子邮件地址,从而验证oauth令牌 对于谷歌和Facebook来说,令牌验证(以及获取相关电子邮件)是一个非常简单的REST调用。但是Twitter要求您创建一个签名请求,这很复杂而且容易出错。幸运的是,有一个开

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

为了防止客户端伪造错误的电子邮件地址,我通过SSL将oauth令牌发送到服务器端,并使用用户凭据验证它们是否确实拥有该电子邮件地址,从而验证oauth令牌

对于谷歌和Facebook来说,令牌验证(以及获取相关电子邮件)是一个非常简单的REST调用。但是Twitter要求您创建一个签名请求,这很复杂而且容易出错。幸运的是,有一个开源的客户端库twitter4j,它使我只需几行代码就可以做到这一点


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

您将需要以下导入:

import twitter4j.Twitter;
import twitter4j.TwitterFactory;
import twitter4j.conf.Configuration;
import twitter4j.conf.ConfigurationBuilder;
当你为Twitter API访问注册你的应用程序时,他们会为你提供一个消费者API密钥和一个消费者API机密来识别你的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对象进行twitterapi调用。在我的例子中,我只打了一个电话来验证oauth凭据,并获取用户的电子邮件,这样我就可以对照播放器数据库进行检查:

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

您将需要这些导入:

import twitter4j.Twitter;
import twitter4j.TwitterFactory;
import twitter4j.conf.Configuration;
import twitter4j.conf.ConfigurationBuilder;
当你为Twitter API访问注册你的应用程序时,他们会为你提供一个消费者API密钥和一个消费者API机密来识别你的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对象进行twitterapi调用。在我的例子中,我只打了一个电话来验证oauth凭据,并获取用户的电子邮件,这样我就可以对照播放器数据库进行检查:

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