0

わかりましたので、プログラムを実行するたびに Twitter のアクセス トークンを取得します...(現時点では面倒ですが、それを永続的なストアにする方法を見つけます)...このアクセス トークンを使用するにはどうすればよいのでしょうか検索しても見つからない

「レート制限を超えました。クライアントは 1 時間あたり 150 を超えるリクエストを行うことはできません。」エラー?

次のようにコード化されている「https://api.twitter.com/1/users/show.json?screen_name=[screenName]」を検索しているときに発生します。

BufferedReader ff = new BufferedReader( new InputStreamReader(ffUser.openConnection().getInputStream()));

以下の私のコードでは:

public class UDC  {
private static String term1;
private static String term2;
public static String PIN;

private static final String twitterSearch = "http://search.twitter.com/search.json?q=%23";
private static String rppPage = "&rpp=500&page=1";

private static final String ffGet = "https://api.twitter.com/1/users/show.json?screen_name=";
private static final String CONSUMER_KEY = "K7el7Fqu7UtcJv3A3ssOQ";
private static final String CONSUMER_SECRET = "w7ZX27ys58mafLYeivuA2POVe0gjhTIIUH26f2IM";

private static String entities = "&include_entities=true";

static Object[][] tableData = new Object[500][6];
static SearchResultC s = new SearchResultC();
static StringBuffer buff = new StringBuffer();
static StringBuffer buff1 = new StringBuffer();

public static void main (String args[]) throws Exception{
    verifyURL v = new verifyURL();
    Twitter twitter = new TwitterFactory().getInstance();
      twitter.setOAuthConsumer(CONSUMER_KEY, CONSUMER_SECRET);
      RequestToken requestToken = twitter.getOAuthRequestToken();
      AccessToken accessToken = null; // = loadAccessToken(Integer.parseInt(args[0]));
            //Twitter twitter = factory.getInstance);
            //twitter.setOAuthConsumerKey(COMSUMER_KEY, COMSUMER_SECRET);
            //twitter.setOAuthAccessToken(accessToken);

      v.valURLText.setText(requestToken.getAuthorizationURL());
      v.vFrame.setVisible(true);
      int p = 0;

      do {
          //nothing
      } while (v.vFrame.isVisible());
                try {
                  if (PIN.length() > 0) {
                      accessToken = twitter.getOAuthAccessToken(requestToken, PIN);
                  } else {
                      accessToken = twitter.getOAuthAccessToken();
                  }
              } catch (TwitterException te) {
                  if(401 == te.getStatusCode()) {
                      showErrorPane("Unable to get access code", "Error");
                      p = 1;
                  } else {
                      te.printStackTrace();
                  }
              }

      //storeAccessToken(twitter.verifyCredentials().getId(), accessToken);


    if (p == 0) {
        initComponents();
        UDTFrame.setVisible(true);
    } else {
        System.exit(0);
    }
}


@SuppressWarnings({ "static-access"})
private static void searchButtonMouseClicked(String t1, String t2) throws IOException {

    if(t1.equals("") || t2.equals("") || t1.equals(t2))
        {
        showErrorPane("Invalid Search Terms", "Search Error");
    }

    else 
    {
        s.getInitComponents();
        clicked(t1, 0);
        clicked(t2, 3);
        s.SRTFrame.setVisible(true);
        s.sTerm1Field.setText(t1);
        s.sTerm2Field.setText(t2);
    }
}

@SuppressWarnings("static-access")
public static void clicked(String term, int t){
    UDTFrame.setVisible(false);
    float follower;
    float friends;
    float ffRatio;
    float DUA;
    int statuses;
    int day;
    int year;
    String month;

    try {
        URL searchURL1 = new URL (twitterSearch + term + rppPage);
        //String searchURL = new String (twitterSearch + term + rppPage);
        BufferedReader br = new BufferedReader( new InputStreamReader(searchURL1.openConnection().getInputStream()));

        //OAuthRequest request = new OAuthRequest(Verb.POST, searchURL);

        int c;
        while ((c=br.read()) != -1) {
            buff.append((char)c);
        }
        br.close();

        /*******************************************************************************************/
        /*******************************************************************************************/
        /******************************** follower/friend ratio ************************************/
        /*******************************************************************************************/
        /*******************************************************************************************/
        JSONObject js = new JSONObject(buff.toString());
        JSONArray tweets = js.getJSONArray("results");
        JSONObject tweet = new JSONObject();
        for(int i=0; i < tweets.length(); i++) {
            tweet = tweets.getJSONObject(i);
            //System.out.println(tweet);
            //user[i] = tweet.getString("from_user_name");
            //System.out.println(tweet.getString("from_user_name"));
            //System.out.println(user[i]);
            String userName = tweet.getString("from_user");

            //URL ffUser = new URL(ffGet + user[i] + entities);
            URL ffUser = new URL(ffGet + userName + entities);
            String ffUser1 = new String(ffGet + userName + entities);

            BufferedReader ff = new BufferedReader( new InputStreamReader(ffUser.openConnection().getInputStream()));
            OAuthRequest request = new OAuthRequest(Verb.POST, ffUser1);

            int d, e = 0;
            while((d = ff.read()) != -1) {
                buff1.append((char)d);
                e++;
            }
            ff.close();

            JSONObject js1 = new JSONObject(buff1.toString());
            //System.out.println(js1);
            //JSONArray userData = new JSONArray(buff1.toString());
            //JSONObject userData1;
            //for(int j = 0; j < js1.length(); i++){
                //userData1 = userData.getJSONObject(j);
                follower =  js1.getInt("followers_count");
                friends = js1.getInt("friends_count");
                ffRatio = friends/follower;

                String createdDate = js1.getString("created_at");
                statuses = js1.getInt("statuses_count");

                String nameData = js1.getString("name");
                String gen = gender(nameData);


        //}

    } catch (MalformedURLException e1) {
        // TODO Auto-generated catch block
        e1.printStackTrace();
    } catch (JSONException e1) {
        // TODO Auto-generated catch block
        e1.printStackTrace();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    }
}

私はこの OAuth とアクセス トークンにまったく慣れていないので、どんな助けでも大歓迎です。

4

1 に答える 1

0

OAuthRequest request = new OAuthRequest(Verb.POST, ffUser1);

Scribeライブラリを使用して認証されていない要求を実行しています(この要求に署名OAuthServiceするために使用する必要があるオブジェクトをインスタンス化したことはありません)。したがって、これを頻繁に行うと、Twitterはこれらの要求を拒否します。

したがって、ここでの問題は、Twitter4JとScribeの混合に起因します。

于 2012-10-09T22:45:36.910 に答える