Proljetno postavljanje društvenog Twittera

Prvi dio serije uspio je s početnim radom na konzumiranju API-ja StackExchange REST kako bi se pronašla njegova glavna pitanja. Ovaj drugi dio usredotočit će se na postavljanje podrške potrebne za interakciju s Twitter REST API-ima pomoću projekta Spring Social Twitter. Krajnji je cilj biti u mogućnosti postavljati ova pitanja dva puta dnevno na nekoliko računa, od kojih je svaki usredotočen na jednu temu.

1. Korištenje Spring Social Twittera

Potrebne ovisnosti potrebne za korištenje projekta Spring Social Twitter su jednostavne. Prvo, definiramo proljeće-društveni-cvrkut sebe:

 org.springframework.social spring-social-twitter 1.1.0.OBLAŽENJE 

Zatim, neke od njegovih ovisnosti moramo nadjačati novijim verzijama:

 org.springframework spring-core 4.1.0.RELEASE org.springframework spring-web 4.1.0.RELEASE org.codehaus.jackson jackson-mapper-asl 1.9.13 

Oba opružna jezgra i proljeće-mreža definiraju se kao ovisnosti pomoću proljeće-društveni-cvrkut ali sa starije verzije3.0.7.OSLOBOĐENJE i 3.1.0.OSLOBOĐENJE odnosno. Nadjačavanje ovih u našem vlastitom pomu osigurava da projekt koristi ažurne verzije koje smo definirali umjesto ovih starijih naslijeđenih verzija.

2. Izrada Twitter aplikacije

Ova upotreba - cvrkutanje na a osobni račun a ne u ime drugih korisnika na njihovim računima, jednostavan je. Činjenica da je jednostavna omogućuje nam da se oslobodimo većine OAuth orkestracije potrebne ako bi aplikacija trebala tvitovati za više korisnika, na svakom od njihovih twitter računa.

Dakle, za našu upotrebu, hoćemo stvoriti TwitterTemplate direktno, jer ručno možemo postaviti sve što nam je potrebno za to.

Prvo što trebamo je dev aplikacija - jedan se ovdje može stvoriti, nakon prijave. Nakon stvaranja aplikacije imat ćemo Potrošački ključ i Potrošačka tajna - dobiveni su na stranici zahtjeva - na Pojedinosti kartica, ispod Postavke OAuth.

Također, kako bi se omogućilo da aplikacija cvrkuće na računu, Čitati i pisati Pristup mora biti postavljen da zamijeni zadani Čitati samo povlastice.

3. Osiguravanje a TwitterTemplate

Dalje, TwitterTemplate zahtijeva Pristupni žeton i an Pristupite tajni tokena biti predviđen. Oni se također mogu generirati sa stranice aplikacije - pod Pojedinosti kartica - Izradi moj pristupni token. I pristupni token i tajna mogu se dohvatiti ispod Alat OAuth tab.

Novi se uvijek mogu regenerirati na Pojedinosti tab, putem Ponovo stvori moj pristupni token akcijski.

U ovom trenutku imamo sve što nam treba - Potrošački ključ i Potrošačka tajna, kao i Pristupni žeton i Pristupna tajna - što znači da možemo ići naprijed i stvoriti svoj TwitterTemplate za tu aplikaciju:

novi TwitterTemplate (consumerKey, consumerSecret, accessToken, accessTokenSecret);

4. Jedan predložak po računu

Sad kad smo vidjeli kako stvoriti singl TwitterTemplate za jedan račun, možemo se ponovno osvrnuti na svoju upotrebu - moramo cvrkutati na nekoliko računa - što znači da ih trebamo nekoliko TwitterTemplate instance.

Na zahtjev se mogu jednostavno stvoriti jednostavnim mehanizmom:

@Component javna klasa TwitterTemplateCreator {@Autowired private Environment env; javni Twitter getTwitterTemplate (Niz računaName) {String ConsumerKey = env.getProperty (accountName + ".consumerKey"); Niz consumerSecret = env.getProperty (accountName + ".consumerSecret"); Niz accessToken = env.getProperty (accountName + ".accessToken"); String accessTokenSecret = env.getProperty (accountName + ".accessTokenSecret"); Preduvjeti.checkNotNull (consumerKey); Preduvjeti.checkNotNull (consumerSecret); Preduvjeti.checkNotNull (accessToken); Preduvjeti.checkNotNull (accessTokenSecret); TwitterTemplate twitterTemplate = novi TwitterTemplate (consumerKey, consumerSecret, accessToken, accessTokenSecret); vratiti twitterTemplate; }}

Četiri sigurnosna artefakta su naravno eksternalizirano u datoteci svojstava, po računu; na primjer, za SpringAtSO račun:

SpringAtSO.consumerKey = nqYezCjxkHabaX6cdte12g SpringAtSO.consumerSecret = 7REmgFW4SnVWpD4EV5Zy9wB2ZEMM9WKxTaZwrgX3i4A SpringAtSO.accessToken = 1197830142-t44T7vwgmOnue8EoAxI1cDyDAEBAvple80s1SQ3 SpringAtSO.accessTokenSecret = ZIpghEJgFGNGQZzDFBT5TgsyeqDKY2zQmYsounPafE

To omogućuje dobru kombinaciju fleksibilnosti i sigurnosti - sigurnosne vjerodajnice nisu dio baze kodova (koja je openource), već žive neovisno o datotečnom sustavu, a Spring ih preuzima i u Spring Enviroment-u nudi putem jednostavne konfiguracije:

@Configuration @PropertySource ({"file: ///opt/stack/twitter.properties"}) javna klasa TwitterConfig {//}

Svojstva u proljeće tema su o kojoj je već bilo riječi, pa ovdje nećemo ulaziti u daljnje detalje.

Konačno, a test provjerit će da li račun ima potrebne sigurnosne podatke koji su dostupni u proljetnom okruženju; ako svojstva nisu prisutna, getTwitterTemplate logika bi trebala pasti na testu s a NullPointerException:

@RunWith (SpringJUnit4ClassRunner.class) @ContextConfiguration (classes = {TwitterConfig.class}) javna klasa TwitterTemplateCreatorIntegrationTest {@Autowired private TwitterTemplateCreator twitterTemplateCreator; // @Test javna praznina givenValidAccountSpringAtSO_whenRetrievingTwitterClient_thenNoException () {twitterTemplateCreator.getTwitterTemplate (SimpleTwitterAccount.SpringAtSO.name ()); }}

5. Cvrkutanje

Uz TwitterTemplate stvorio, okrenimo se stvarnom djelovanju cvrkutanje. Za to ćemo koristiti vrlo jednostavnu uslugu, prihvaćajući TwitterTemplate i koristeći svoj temeljni API za stvaranje tvita:

@Service javna klasa TwitterService {private Logger logger = LoggerFactory.getLogger (getClass ()); javni void tweet (Twitter twitter, String tweetText) {try {twitter.timelineOperations (). updateStatus (tweetText); } catch (RuntimeException ex) {logger.error ("Nije moguće objaviti tweet" + tweetText, ex); }}}

6. Testiranje TwitterTemplate

I na kraju, možemo napisati test integracije kako bismo izveli cjelokupni postupak pružanja a TwitterTemplate za račun i tweetovanje na tom računu:

@RunWith (SpringJUnit4ClassRunner.class) @ContextConfiguration (classes = {TwitterConfig.class}) javna klasa TweetServiceLiveTest {@Autowired private TwitterService twitterService; @Autowired privatni TwitterTemplateCreator twitterCreator; @Test public void whenTweeting_thenNoExceptions () {Twitter twitterTemplate = twitterCreator.getTwitterTemplate ("SpringAtSO"); twitterService.tweet (twitterTemplate, "Prvi Tweet"); }}

7. Zaključak

U ovom trenutku, Twitter API koji smo stvorili potpuno je odvojen od API-ja StackExchange i može se koristiti neovisno o toj određenoj upotrebi za cvrkutanje bilo čega.

Sljedeći logični korak u procesu tweetova s ​​računa Stack Exchange računa jest stvaranje komponente - interakcije s njom oba API-ja za Twitter i StackExchange koje smo do sada predstavili - to će biti fokus sljedećeg članka u ovoj seriji.


$config[zx-auto] not found$config[zx-overlay] not found