2

http://twitter4j.org/en/code-examples.html-OAuth認証中に静的にTwitterPINを提供する方法。コード例では、PINがすでに使用可能な場合に提供する方法について説明しています。

私たちのアプリケーションはスタンドアロンのJavaアプリケーションであり、人間の介入なしにプロパティファイルを介してクレデンシャルを渡すことを好みます。

4

2 に答える 2

2

Twitter から PIN コードが提供されます。

この例では、Twitter4J は、誰かが提供した URL ( requestToken.getAuthorizationURL()10 行目) を Web ブラウザーにコピーし、ブラウザーを介してアプリケーションを承認すると想定しています。その後、ユーザーはブラウザーに表示された PIN コードをサンプル プログラムに書き込むことになっています。

この例には 2 つの大きな欠点があります。

  • 人間の介入
  • Twitter が PIN コードを提供しない場合 (そして、Twitter アプリケーションのコールバック URL が " " でない場合に発生します)、サンプル プログラムにどのコードを提供しますoobか?

PIN コードを取得するには、人間の介入をシミュレートする必要があります。残念ながら、Twitter4J はこれを行うためのメソッドを取得していないようです (Javadoc にそのようなメソッドはありません)。そのため、次のプロセスを自分でコーディングする必要があります。

  1. で Web ページの HTML コードを取得しますrequestToken.getAuthorizationURL()
  2. この HTML ページには、PIN コードを取得するためのユーザー名 (または電子メール) とユーザーのパスワードと共にいくつかのパラメーターが投稿されるフォームが含まれています。これらのパラメーターは、" oauth_token" (既に持っている一時的な OAuth トークン)、" deny" (アプリケーションを承認したくない場合に使用するタグ)、および " authenticity_token" と呼ばれます。それらはすべて<input>HTML タグにあります。それらを選んでください。
  3. フォームの投稿をシミュレートします。POST oauth/authorizeこれには、エンドポイントを使用する必要があります。URLはhttps://api.twitter.com/oauth/authorize?oauth_token=<your OAuth Token>. リクエストの認証に関する Twitter のプロセスに従って、リクエストを認証する必要があります。投稿する内容は次のとおりです: " 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 は Web ページを返します。認証が成功すると、PIN が内部に表示されます。ただし、注意してください。PIN の名前は、コールバック URL によって異なります。コールバック URL が " oob" の場合、PIN コードはOAuth PINと呼ばれます。<div id="oauth_pin">HTMLタグのどこかにある4桁の数字です。それ以外の場合は、OAuth Verifierと呼ばれます。<div class="happy notice callback">これは、 HTML タグ内にある URL に含まれています。この URL では、PIN はoauth_verifier要求文字列の です。OAuth トークンのように見えます。

私のプロセスの 2 番目と 4 番目のステップの Web ページの HTML コードを見てください。プロセスを理解することは非常に役立ちます。

于 2012-08-24T01:07:25.833 に答える
2

今日は、Twitter4j ライブラリを使用して、ユーザーの介入なしで認証する方法を見つけようとしました。私は次のことを思いつきました:

ConfigurationBuilder conf = new ConfigurationBuilder();
conf.setOAuthConsumerKey(CONSUMER_KEY);
conf.setOAuthConsumerSecret(CONSUMER_KEY_SECRET);
conf.setOAuthAccessToken(TOKEN);
conf.setOAuthAccessTokenSecret(TOKEN_SECRET);
Twitter twitter = new TwitterFactory(conf.build()).getInstance();

ConfigurationBuilder を使用することで、自動認証できるようになりました。もちろん、それに応じて CONSUMER AND TOKEN キーの値を設定する必要があります。確認した方法は次のとおりです。

User user = twitter.verifyCredentials();
System.out.println("Successfully verified credentials of " + user.getScreenName());

お役に立てれば!

于 2013-06-30T06:48:31.597 に答える