Tavaszi közösségi Twitter-beállítás

A sorozat első része a StackExchange REST API elfogyasztásának kezdeti munkájával foglalkozik annak legfontosabb kérdéseinek megszerzése érdekében. Ez második rész a Twitter REST API-kkal való interakcióhoz szükséges támogatás beállítására fog összpontosítani a Spring Social Twitter projekt segítségével. A végső cél az, hogy ezeket a kérdéseket naponta kettővel, több fiókban is tweetelhessük, mindegyik egyetlen témára koncentrálva.

1. A Spring Social Twitter használata

A Spring Social Twitter projekt használatához szükséges szükséges függőségek egyértelműek. Először meghatározzuk tavaszi-szociális-twitter maga:

 org.springframework.social spring-social-twitter 1.1.0.KÖZLEMÉNY 

Ezután felül kell írnunk néhány függőségét egy naprakészebb verzióval:

 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 

Mindkét rugómag és tavasz-háló függőségként határozzák meg tavaszi-szociális-twitter hanem azzal régebbi verziók3.0.7.KÖZLEMÉNY és 3.1.0.KÖZLEMÉNY illetőleg. Ha ezeket felülírja a saját csomagunkban, akkor a projekt az általunk definiált naprakész verziókat használja a régebbi örökölt verziók helyett.

2. Twitter alkalmazás létrehozása

Ez a felhasználás - tweetelés a személyes fiók és nem más felhasználók nevében a számlájukon, egyszerű. Az a tény, hogy egyszerű, lehetővé teszi számunkra, hogy eltekinthessünk a legtöbb szükséges OAuth-hangszereléstől, ha az alkalmazásnak több felhasználó számára kell tweetelniük mindegyik twitter-fiókjukon.

Tehát a mi felhasználási esetünkben megtesszük hozza létre a TwitterTemplate közvetlenül, mivel manuálisan beállíthatunk mindent, amire szükségünk van.

Első dolog, amire szükségünk van, az a dev alkalmazás - itt létrehozható, bejelentkezés után. Az alkalmazás létrehozása után lesz egy Fogyasztói kulcs és Fogyasztói titok - ezeket a Pályázat oldaláról szerezzük be - a Részletek fül alatt OAuth-beállítások.

Továbbá, annak érdekében, hogy az alkalmazás tweetelhessen a számlán, Olvass és írj Hozzáférés be kell állítani az alapértelmezett helyettesítésére Olvas csak kiváltságokat.

3. Ellátás a TwitterTemplate

Ezután a TwitterTemplate igényel egy Hozzáférési token és egy Hozzáférési token titkos el kell látni. Ezeket az Alkalmazás oldalról is elő lehet állítani - a Részletek fül - Hozzon létre hozzáférési tokent. Ezután az Access Token és a Secret is lekérhető a OAuth eszköz fülre.

Újak mindig regenerálhatók a Részletek fülön keresztül Hozza létre újra a hozzáférési tokenemet akció.

Ezen a ponton minden megvan, amire szükségünk van - a fogyasztói kulcs és a fogyasztói titok, valamint az Access Token és az Access Token Secret - ami azt jelenti, hogy továbbléphetünk TwitterTemplate az alkalmazáshoz:

új TwitterTemplate (consumerKey, consumerSecret, accessToken, accessTokenSecret);

4. Fiókonként egy sablon

Most, hogy láttuk, hogyan készítsünk kislemezt TwitterTemplate mert egyetlen számla, újra visszatekinthetünk a mi felhasználási területünkre - több fiókban is tweetelni kell - ami azt jelenti, hogy többre van szükségünk TwitterTemplate példányok.

Ezek könnyen létrehozhatók kérésre, egy egyszerű mechanizmus segítségével:

@Component public class TwitterTemplateCreator {@Autowired private Environment env; nyilvános Twitter getTwitterTemplate (String accountName) {String consumerKey = env.getProperty (accountName + ".consumerKey"); Karakterlánc consumerSecret = env.getProperty (accountName + ".consumerSecret"); Karakterlánc accessToken = env.getProperty (accountName + ".accessToken"); Karakterlánc accessTokenSecret = env.getProperty (accountName + ".accessTokenSecret"); Előfeltételek.checkNotNull (consumerKey); Előfeltételek.checkNotNull (consumerSecret); Előfeltételek.checkNotNull (accessToken); Előfeltételek.checkNotNull (accessTokenSecret); TwitterTemplate twitterTemplate = new TwitterTemplate (consumerKey, consumerSecret, accessToken, accessTokenSecret); return twitterTemplate; }}

A négy biztonsági tárgy természetesen külsővé egy tulajdonságfájlban, számlánként; például a SpringAtSO fiókhoz:

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

Ez lehetővé teszi a rugalmasság és a biztonság jó keverékét - a biztonsági hitelesítő adatok nem a kódbázis részét képezik (ami open source), hanem függetlenül élnek a fájlrendszertől, ezeket Spring veszi fel, és a Spring Enviroment-ben érhető el egyszerű konfigurációval:

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

A tavaszi ingatlanok olyan téma, amelyről korábban már volt szó, ezért itt nem részletezzük a témát.

Végül a teszt ellenőrzi, hogy egy fiók rendelkezik-e a szükséges biztonsági információkkal, amelyek a tavaszi környezetben rendelkezésre állnak; ha a tulajdonságok nincsenek meg, a getTwitterTemplate a logikának el kell buknia a tesztet a-val NullPointerException:

@RunWith (SpringJUnit4ClassRunner.class) @ContextConfiguration (class = {TwitterConfig.class}) nyilvános osztály TwitterTemplateCreatorIntegrationTest {@Autowired private TwitterTemplateCreator twitterTemplateCreator; // @Test public void givenValidAccountSpringAtSO_whenRetrievingTwitterClient_thenNoException () {twitterTemplateCreator.getTwitterTemplate (SimpleTwitterAccount.SpringAtSO.name ()); }}

5. tweetelés

A ... val TwitterTemplate létre, térjünk rá a tényleges cselekvésre tweetelés. Ehhez egy nagyon egyszerű szolgáltatást fogunk használni, elfogadva a TwitterTemplate és az alapul szolgáló API segítségével létrehozni egy tweetet:

@Service public class TwitterService {private Logger logger = LoggerFactory.getLogger (getClass ()); public void tweet (Twitter twitter, String tweetText) {próbáld ki {twitter.timelineOperations (). updateStatus (tweetText); } catch (RuntimeException ex) {logger.error ("Nem lehet tweetelni" + tweetText, ex); }}}

6. A. Tesztelése TwitterTemplate

És végül integrációs tesztet írhatunk a teljes kiépítés folyamatának elvégzésére a TwitterTemplate egy fiókhoz és az adott fiók tweeteléséhez:

@RunWith (SpringJUnit4ClassRunner.class) @ContextConfiguration (class = {TwitterConfig.class}) nyilvános osztály TweetServiceLiveTest {@Autowired private TwitterService twitterService; @Autowired privát TwitterTemplateCreator twitterCreator; @Test public void whenTweeting_thenNoExceptions () {Twitter twitterTemplate = twitterCreator.getTwitterTemplate ("SpringAtSO"); twitterService.tweet (twitterTemplate, "Első tweet"); }}

7. Következtetés

Ezen a ponton az általunk létrehozott Twitter API teljesen elkülönül a StackExchange API-tól, és az adott felhasználási módtól függetlenül használható, bármi tweetelésére.

A Stack Exchange-fiókok kérdéseinek tweetelésének következő logikus lépése egy komponens létrehozása - kölcsönhatásba lépve mind a Twitter, mind a StackExchange API-kat amit eddig bemutattunk - ez lesz a hangsúly a sorozat következő cikkében.


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