使用scribe获取带有特定标签的tweet

hl0ma9xz  于 2021-06-30  发布在  Java
关注(0)|答案(1)|浏览(477)

我可以使用scribe使用streeming api获取带有特定标签的tweet吗?我在java工作,我想在appengine项目中使用scribe。有可能吗?我尝试以下代码:

  1. OAuthService service = new ServiceBuilder()
  2. .provider(TwitterApi.class)
  3. .apiKey(MYCONSUMERKEY)
  4. .apiSecret(MYCONSUMERSECRET)
  5. .debug()
  6. .build();
  7. OAuthRequest request = new OAuthRequest(Verb.GET, PROTECTED_RESOURCE_URL);
  8. request.addBodyParameter("track", "prova");
  9. Token requestToken = new Token(MYACCESSTOKEN,MYACCESSTOKENSECRET);
  10. service.signRequest(requestToken, request);
  11. Response response = request.send();
  12. System.out.println(response.getBody());
  13. }

答案是:

  1. signing request: https://stream.twitter.com/1/statuses/filter.json
  2. setting token to: Token[MYACCESSTOKEN,MYACCESSTOKENSECRET]
  3. generating signature...
  4. base string is: GET&https%3A%2F%2Fstream.twitter.com%2F1%2Fstatuses%2Ffilter.json&oauth_consumer_key%3DMYCONSUMERKEY%26oauth_nonce%3Dxxx%26oauth_signature_method%3DHMAC-SHA1%26oauth_timestamp%3Dxxx%26oauth_token%3Dxxx%26oauth_version%3D1.0%26track%3Dprova
  5. signature is: 5UU55rZqzjiaRwSNGz/jrcffPoM=
  6. appended additional OAuth parameters: { oauth_signature -> xxx , oauth_version -> 1.0 , oauth_nonce -> xxx , oauth_signature_method -> HMAC-SHA1 , oauth_consumer_key -> MYCONSUMERKEY , oauth_token -> xxx , oauth_timestamp -> xxx }
  7. using Http Header signature
  8. <html>
  9. <head>
  10. <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
  11. <title>Error 401 Unauthorized</title>
  12. </head>
  13. <body>
  14. <h2>HTTP ERROR: 401</h2>
  15. <p>Problem accessing '/1/statuses/filter.json'. Reason:
  16. <pre> Unauthorized</pre>
fjnneemd

fjnneemd1#

正如我从代码中看到的,您正试图使用requesttoken对get调用进行签名,您必须首先获取一个accesstoken,然后使用这个accesstoken对任何get/post调用进行签名。试着这样做:

  1. OAuthService service = new ServiceBuilder()
  2. .provider(TwitterApi.class)
  3. .apiKey(MYCONSUMERKEY)
  4. .apiSecret(MYCONSUMERSECRET)
  5. .debug()
  6. .build();
  7. //get a request token
  8. Token requestToken = service.getRequestToken();
  9. //go to this url
  10. System.out.println(service.getAuthorizationUrl(requestToken));
  11. //after autorizing your twitter account you will see a blank page, in the url you will see
  12. //a parameter called oauth_verifier=XXXXXXXXXXX;
  13. //paste the xxxx after this code:
  14. Verifier verifier = new Verifier(in.nextLine());
  15. //now request an accessToken to service:
  16. Token accessToken = service.getAccessToken(requestToken, verifier);
  17. //once you have accessToken, you should use it to do GET/POST calls:
  18. OAuthRequest request = new OAuthRequest(Verb.GET, PROTECTED_RESOURCE_URL);
  19. //GET CALL DO NOT ACCEPT PARAMETER
  20. service.signRequest(accessToken, request);
  21. Response response = request.send();
  22. System.out.println(response.getBody());
  23. //POST CALL
  24. OAuthRequest request = new OAuthRequest(Verb.POST, PROTECTED_RESOURCE_URL);
  25. request.addBodyParameter("track", "prova");
  26. service.signRequest(accessToken, request);
  27. Response response = request.send();
  28. System.out.println(response.getBody());
展开查看全部

相关问题