WP7 Integrarea Twitter-ului cu aplicația dvs.

Cu integrarea pe Twitter, utilizatorii pot partaja conținutul aplicației pe cronologie. De exemplu, în aplicațiile multimedia un utilizator poate tweet melodia pe care o asculta sau dacă aplicația este un joc, o nouă realizare deblocată poate fi tweetată. Integrarea Twitter-ului în aplicația dvs. o va ajuta să iasă în evidență și să îi permită utilizatorilor să o promoveze.


Pasul 1: Crearea proiectului Visual Studio

Pentru a începe, trebuie să creați un nou proiect pe Visual Studio. Pentru acest tutorial avem nevoie de o aplicație simplă, deci selectați opțiunea "Windows Phone App":

Dacă utilizați Visual Studio 2012 cu noul kit SDK WP8, vi se va cere informații despre versiunea OS Windows Phone Target. Dacă este cazul, selectați sistemul de operare 7.1.


Pasul 2: Construirea interfeței utilizator

Acum, când proiectul este creat, deschideți fișierul "MainPage.xaml", dacă acesta nu este deja deschis, și schimbați caseta text a aplicației implicite și a numelui paginii:

    

Acum, în Gridul ContentPanel adăugați două rânduri, unul pentru un textBox în care utilizatorul va introduce noua stare, iar celălalt pentru butonul pentru a trimite starea:

      

Apoi adăugați o casetă de text pe primul rând cu numele "Mesaj" și un buton de pe al doilea rând:

       

În final, ar trebui să aveți acest lucru:


Pasul 3: Crearea unui cont de dezvoltator Twitter

Pentru a vă conecta la Twitter, va trebui mai întâi un cont de dezvoltator. Accesați pagina de pornire a dezvoltatorului Twitter și conectați-vă cu contul dvs. Twitter sau creați unul dacă nu aveți deja unul.


Pasul 4: Înregistrarea aplicației noi

După ce v-ați conectat, accesați pagina "Aplicațiile mele", apoi faceți clic pe butonul "Creați o nouă aplicație". Pe pagina următoare, completați detaliile aplicației și, dacă aveți deja un site web, introduceți site-ul dvs. în câmpurile URL ale site-urilor Web și Callback. În caz contrar, utilizați un substituent ca "http://www.google.com". După acest pas, va apărea o nouă pagină care vă oferă două jetoane, "jetonul de acces" și "secretul accesului token". Copiați aceste coduri și adăugați-le ca șiruri constante deasupra constructorului "MainPage.xaml.cs":

 privat const string consumerKey = "cheia dvs. aici"; privat const string string consumerSecret = "secretul tău aici"; // Constructor public MainPage () InitializeComponent (); 

Pasul 5: Introducere în Tweetsharp

Twitter are un API complet care vă permite să vă conectați aplicația la serviciu în mai multe moduri. Este clar și ușor de urmărit, deci este un mare add-on pentru orice aplicație. Rețineți că API-ul de autentificare este construit folosind OAuth, ceea ce îl face foarte sigur, dar îi dă dezvoltatorilor probleme la conectarea la API. Pașii de conectare la API sunt explicați pe documentația OAuth a API-ului. Există modalități diferite de a vă conecta, dar în acest tutorial vom folosi autorizarea cu 3 picioare. Această metodă solicită solicitarea unui Token, apoi duce utilizatorul la o pagină de conectare și colectează AccessToken. Acest proces poate fi un pic mai complicat, mai ales dacă încercați să adăugați doar una sau două caracteristici ale API-ului. Din fericire, există o bibliotecă dezvoltată de Daniel Crenna numită Tweetsharp. Tweetsharp este un instrument excelent care va simplifica comunicarea dintre aplicațiile dvs. WP7 și Twitter. Este foarte simplu de utilizat și vă oferă acces la întregul API Twitter de la o singură bibliotecă:

TweetSharp este o bibliotecă API Twitter care simplifică sarcina de a adăuga Twitter pe desktop, web și aplicații mobile. Aveți posibilitatea să construiți widgeturi simple sau suite complexe de aplicații utilizând TweetSharp.

Puteți găsi mai multe informații despre proiect, accesând site-ul lor web și vizionând proiectele de exemple găzduite.


Pasul 6: Descărcarea Tweetsharp

Biblioteca este disponibilă numai prin NuGet, deci în cazul în care Visual Studio nu include managerul de pachete NugGet, trebuie să îl descărcați de pe pagina principală NuGet. Pentru a descărca pachetul, deschideți Consola Manager de pachete în Visual Studio (Instrumente> Manager pachet de biblioteci> Consola Manager pachet) și introduceți următoarea comandă:Instalare-Pachet TweetSharp.


Pasul 7: Adăugarea Tweetsharp la proiect

Acum, că avem biblioteca, o putem adăuga la proiectul nostru. Adăugați un nou import în fișierul "MainPage.xaml.cs":

 folosind Tweetsharp

Pasul 8: Adăugarea unui browser

Pentru a conecta o aplicație la un cont Twitter al unui utilizator, trebuie mai întâi să primim acces și permisiune pentru contul Twitter. Acest lucru se face prin intermediul paginii web a lui Twitter. Prin urmare, trebuie să adăugăm un browser web. Browserul ar trebui să acopere cea mai mare parte a paginii, așa că inițial va fi restrâns și apoi va fi vizibil numai atunci când utilizatorul trebuie să se autentifice. În fișierul "MainPage.xaml" adăugați un nou WebBrowser chiar sub ContentPanel:

       

Pasul 9: Conectarea la Twitter

Acum, că am adăugat Tweetsharp și browserul web, putem continua și conectăm aplicația noastră la Twitter. Conexiunea se face printr-un obiect TwitterService. Prin urmare, trebuie să creăm o variabilă globală privată și să o inițializăm pe constructor:

 client privat TwitterService; // Constructor public MainPage () InitializeComponent (); client = noul TwitterService (consumerKey, consumerSecret); 

Pasul 10: Adăugarea evenimentului Click

Prima dată când un utilizator face clic pe butonul "Tweet", trebuie să-l trimiteți pe pagina de conectare Twitter pentru a vă da permisiunea necesară pentru aplicația dvs. Pentru a face acest lucru, cereți o Solicitare de Solicitare. Odată ce aveți jetonul, accesați pagina de conectare. Mai întâi, trebuie să adăugați evenimentul clic pe butonul "Faceți clic":

 

Acum adăugați această metodă la cod:

 private void tweetClick (expeditor obiect, RoutedEventArgs e) // Cereți token

Înainte de a putea adăuga codul pentru token, avem nevoie de două lucruri, o variabilă booleană care ne spune dacă utilizatorul este deja logat și o variabilă care va salva RequestToken-ul. Să adăugăm acest lucru la codul de deasupra constructorului:

 privat OAuthRequestToken requestToken; bool privat userAuthenticated = false;

Pasul 11: Procesarea Solicitării

Cu variabilele gata, putem merge și să creăm metoda pentru procesarea Solicitării noastre. Acest lucru va verifica erorile. Dacă totul a fost făcut corect, salvați tokenul și duceți utilizatorul la adresa URL de conectare din formularul RequestToken:

 privat void processRequestToken (token OAuthRequestToken, răspuns TwitterResponse) if (token == null) Dispatcher.BeginInvoke (() => MessageBox.Show ("Eroare la obținerea tokenului de solicitare"); altfel requestToken = token; Dispatcher.BeginInvoke (() => Browser.Visibility = System.Windows.Visibility.Visible; Browser.Navigate (client.GetAuthorizationUri (requestToken));); 

Acum adăugați codul pentru a solicita codul Token în cadrul metodei evenimentului Click:

 // Dacă utilizatorul este deja logat, trimiteți doar tweetul, altfel obțineți RequestToken dacă (userAuthenticated) // trimiteți Tweet, acesta este doar un substituent, vom adăuga codul actual mai târziu Dispatcher.BeginInvoke (() =>  MessageBox.Show ("Placeholder pentru trimiterea de tweet");); altfel client.GetRequestToken (processRequestToken);

Pasul 12: Adăugarea evenimentului navigat

După ce utilizatorul se conectează și acceptă aplicația noastră, Twitter ne va duce la o adresă URL care conține codul de verificator de care avem nevoie pentru a solicita AccessToken. Să adăugăm această metodă de eveniment la browserul nostru

 

Utilizați codul evenimentului:

 private void browserNavigated (expeditor obiect, System.Windows.Navigation.NavigationEventArgs e) 

Pentru a prelua codul de verificator de la adresa URL avem nevoie de un parser, care este în acest caz o metodă care se află în biblioteca extensiilor Hammock. Copiați acest cod și adăugați-l în proiect:

 // Din Hammock.Extensions.StringExtensions.cs public static IDictionary ParseQueryString (interogare șir) // [DC]: Această metodă nu decodează adresa URL și nu poate gestiona intrarea decodificată dacă (query.StartsWith ("?")) Query = query.Substring (1); dacă (query.Equals (string.Empty)) returnează un Dicționar nou();  var părți = interogare.Split (nou [] '&'); returnați părțile.Selectați (part => part.Split (new [] '='))) ToDictionary (pereche => pereche [0], pereche => pereche [1]); 

Cu această metodă putem merge și obține codul de verificator în metoda evenimentului browserNavigated:

 browserul privat privatNavigat (expeditor obiect, System.Windows.Navigation.NavigationEventArgs e) if (e.Uri.AbsoluteUri.Contains ("oauth_verifier")) var values ​​= ParseQueryString (e.Uri.AbsoluteUri); string verifier = valori ["oauth_verifier"]; // getTheAccessToken Dispatcher.BeginInvoke (() => Browser.Visibility = System.Windows.Visibility.Collapsed;); 

Pasul 13: Procesarea AccessToken-ului

La fel ca în RequestToken, trebuie să creați o metodă care să gestioneze rezultatul solicitării AccessToken. Odată ce primim rezultatul, trebuie să verificăm erorile. Dacă cererea a fost efectuată cu succes, vom autentifica apoi utilizatorul și vom trimite mesajul Tweet:

 privat void processAccessToken (token OAuthAccessToken, răspuns TwitterResponse) if (token == null) Dispatcher.BeginInvoke (() => MessageBox.Show ("Eroare în obținerea tokenului de acces"); altfel client.AuthenticateWith (token.Token, token.TokenSecret); userAuthenticated = true; // Trimiteți Tweet, vom adăuga mai târziu acest cod

Cu aceasta ați terminat, accesați metoda browserNavigated și modificați comentariul getTheAccessToken cu următoarea linie:

 client.GetAccessToken (requestToken, verificator, processAccessToken);

Pasul 14: Gestionarea unui răspuns Tweet

Când trimitem un Tweet, vrem să știm dacă a fost trimis cu succes. De aceea avem nevoie de o altă metodă pentru a trata un mesaj Twitter. Iată codul pe care trebuie să-l adăugăm:

 private void tweetResponse (TwitterStatus tweet, răspuns TwitterResponse) if (răspuns.StatusCode == HttpStatusCode.OK) Dispatcher.BeginInvoke (() => MessageBox.Show ("Tweet postat cu succes");); altul Dispatcher.BeginInvoke (() => MessageBox.Show ("Eroare, încercați din nou mai târziu");); 

În cele din urmă, du-te și schimbați comentariul Trimiteți Tweet pe metodele processAccessToken și tweetClick cu următorul rând:

 Dispatcher.BeginInvoke (() => client.SendTweet (Message.Text, tweetResponse));

Pasul 15: Testarea aplicației dvs.

În momentul de față, aplicația dvs. ar trebui să fie complet funcțională, deci mergeți și testați-o. Introduceți orice mesaj pe butonul "Tweet" și apare următorul ecran.

După aceea, ar trebui să apară un mesaj cu mențiunea "Tweet postat cu succes":

Dacă accesați contul Twitter, ar trebui să vedeți și mesajul pe care tocmai l-ați trimis:

Felicitări! Acum aveți o aplicație care se poate conecta la Twitter! Dar nu am terminat încă. Există câteva domenii pe care le putem îmbunătăți.


Pasul 16: Salvarea AccessToken-ului

De fiecare dată când un utilizator deschide aplicația, va trebui să treacă prin pagina de conectare Twitter. Acesta este un lucru pe care utilizatorii nu-l plac. Ei doresc să se înregistreze o singură dată și să poată să facă Twitter fără probleme. Această problemă este ușor de rezolvat. Trebuie să salvăm AccessToken pe care l-am obținut pentru prima dată când utilizatorul se loghează. Odată terminat, este salvat pe IsolatedStorage și va fi întotdeauna accesibil. Acest lucru se poate face folosind următoarea metodă:

 privat void saveAccessToken (token OAuthAccessToken) if (IsolatedStorageSettings.ApplicationSettings.Contains ("accessToken")) IsolatedStorageSettings.ApplicationSettings ["accessToken"] = token; altfel IsolatedStorageSettings.ApplicationSettings.Add ("accessToken", token); IsolatedStorageSettings.ApplicationSettings.Save (); 

Și importarea bibliotecii izolate:

 utilizând System.IO.IsolatedStorage;

Acum putem salva AccessToken obținut din metoda processAccessToken:

 privat void processAccessToken (token OAuthAccessToken, răspuns TwitterResponse) if (token == null) Dispatcher.BeginInvoke (() => MessageBox.Show ("Eroare în obținerea tokenului de acces"); altfel client.AuthenticateWith (token.Token, token.TokenSecret); saveAccessToken (token); userAuthenticated = true; Dispatcher.BeginInvoke (() => client.SendTweet (Message.Text, tweetResponse)); 

Pasul 17: Preluarea AccessToken-ului

Cu simbolul deja disponibil pe IsolatedStorage, avem nevoie de o metodă de preluare a acestuia. Mergeți mai departe și adăugați următoarea metodă:

 privat OAuthAccessToken getAccessToken () if (IsolatedStorageSettings.ApplicationSettings.Contains ("accessToken")) returnează IsolatedStorageSettings.ApplicationSettings ["accessToken"] ca OAuthAccessToken; altfel returnați nul; 

Această funcție trebuie apelată de la constructor pentru că vrem să fim logați de la bun început:

 // Constructor public MainPage () InitializeComponent (); client = noul TwitterService (consumerKey, consumerSecret); // Chek dacă avem deja datele Autehntification var token = getAccessToken (); dacă (token! = null) client.AuthenticateWith (token.Token, token.TokenSecret); userAuthenticated = true; 

Pasul 18: Verificarea jetoanelor expirate

În plus, ține cont de faptul că utilizatorul poate respinge permisiunea aplicației noastre, așa că trebuie să detectăm acest lucru și să solicităm din nou permisiunea. Această detectare ar trebui făcută pe metoda tweetResponse, deoarece acolo Twitter vă anunță orice problemă cu postarea ta. Modificați codul de la tweetResponse la următoarele:

 private void tweetResponse (TwitterStatus tweet, răspuns TwitterResponse) if (răspuns.StatusCode == HttpStatusCode.OK) Dispatcher.BeginInvoke (() => MessageBox.Show ("Tweet postat cu succes"););  altceva if (response.StatusCode == HttpStatusCode.Unauthorized) saveAccessToken (null); userAuthenticated = false; Dispatcher.BeginInvoke (() => MessageBox.Show ("Eroare de autentificare"););  altceva Dispatcher.BeginInvoke (() => MessageBox.Show ("Eroare, încercați din nou mai târziu");); 

Pasul 19: Modificați butonul din spate

O ultima caracteristică pe care o puteți adăuga aplicației dvs. este să permiteți utilizatorului să închidă browserul dacă dorește. Chiar dacă browserul apare, singura modalitate de închidere este conectarea sau eroarea. Puteți oferi utilizatorului această opțiune utilizând butonul din spate:

 protejate override void OnBackKeyPress (System.ComponentModel.CancelEventArgs e) dacă (Browser.Visibility == System.Windows.Visibility.Visible) Browser.Visibility = System.Windows.Visibility.Collapsed; e.Cancel = true;  base.OnBackKeyPress (e); 

Unde să mergeți de aici

Acest tutorial este o scurtă explicație a ceea ce puteți face cu Tweetsharp și Twitter. Dacă sunteți interesat de creșterea funcționalității aplicației dvs., cum ar fi obținerea mențiunilor, retweets, mesaje directe și multe alte funcții, vizitați site-ul Tweetsharp și veți găsi tot ce aveți nevoie pentru a începe să dezvoltați o aplicație excelentă. Sper că v-ați bucurat de acest tutorial și că va fi util pentru viitoarele dvs. proiecte.

Cod