2016-09-21 2 views
0

プレーヤーアカウントがメールアドレスに関連付けられたクライアント/サーバーゲーム(iOSクライアント、Javaサーバー)があります。クライアントは、それぞれのサインインSDKを使用して、Google、Facebook、Twitterでサインインすることができます。JavaサーバーでTwitter OAuthの資格情報(電子メールを含む)を検証する方法

クライアントが間違った電子メールアドレスを偽装するのを防ぐため、oauthトークンをSSL経由でサーバー側に送信し、ユーザーの資格情報を使用して実際にその電子メールアドレスを所有していることを検証します。

GoogleとFacebookの場合、トークンの検証(および関連するメールの取得)はかなり簡単なREST呼び出しでした。しかし、Twitterでは署名入りのリクエストを作成する必要があり、複雑でエラーが発生しやすいことが判明しました。幸いにも、オープンソースのクライアントライブラリtwitter4jがありました。私は数行のコードでそれを実現できました。

このタスクにtwitter4jを使用する方法は少し難解でしたので、ここでそれを文書化しています。

答えて

1

あなたはこれらの輸入をする必要があります:あなたはTwitterのAPIへのアクセスのためにアプリを申し込むとき

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

、彼らはあなたのiOSアプリを識別するために、あなたの消費者向けAPIキーとコンシューマAPIの秘密を提供しています。これらはJavaサーバー上で何らかの形で使用可能にする必要があります。あなたの資格情報を使用して

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(); 

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

は、その後、あなたがiOSアプリからオーバー送られたあなたのOAuthの認証情報が必要です。これは、ソースコードに直接それらを置くのが最も簡単です

Twitterオブジェクトを介してTwitter API呼び出しを行うことができます。私の場合は、oauthの資格情報を確認するために1回の呼び出しを行い、ユーザーの電子メールを取得するので、プレーヤーのデータベースに対して確認することができます。

twitter4j.User user = twitter.verifyCredentials(); 
String email = user.getEmail(); 
... 
関連する問題