Med Twitter-integrasjon kan brukerne dele appinnholdet på sin tidslinje. For eksempel kan en bruker i multimediaprogrammer tweet sangen han hører på, eller hvis appen er et spill, kan en ny ulåst prestasjon tweeted. Integrering av Twitter til appen din vil hjelpe det å skille seg ut og gjøre det mulig for brukere å markedsføre den.
For å begynne, må vi opprette et nytt prosjekt på Visual Studio. For denne opplæringen trenger vi en enkel app, så velg alternativet "Windows Phone App":
Hvis du bruker Visual Studio 2012 med den nye WP8 SDK, blir du spurt om Target Windows Phone OS versjonen. Hvis det er tilfelle, velg 7.1 OS.
Nå som prosjektet er opprettet, åpner du "MainPage.xaml" -filen, hvis den ikke allerede er åpen, og endrer standardprogrammets og sidens tekstboks:
Nå i ContentPanel Grid legger du til to rader, en for en tekstboks der brukeren vil legge inn den nye statusen, og den andre for knappen for å sende statusen:
Legg deretter til en tekstboks på første rad med navnet "Melding" og en knapp på den andre raden:
På slutten bør du ha dette:
For å kunne koble til Twitter, trenger du først en utviklerkonto. Gå til Twitter utviklerens hjemmeside og logg inn med Twitter-kontoen din, eller opprett en hvis du ikke allerede har en.
Når du er logget inn, gå til siden "Mine programmer", og klikk deretter på "Opprett en ny applikasjon" -knapp. På den følgende siden fyller du inn søknadsdetaljer, og hvis du allerede har et nettsted, skriv inn nettstedet ditt på webområdet Nettsted og Tilbakekallingsadressefelt. Ellers bruker du en plassholder som "http://www.google.com". Etter dette trinnet vises en ny side som gir deg to tokens, "Access token" og "Access token secret". Kopier disse kodene og legg dem til som konstante strenger på toppen av "MainPage.xaml.cs" -konstruktøren din:
private const string consumerKey = "nøkkelen din her"; privat const streng consumerSecret = "din hemmelighet her"; // Constructor public MainPage () InitializeComponent ();
Twitter har en komplett API som lar deg koble appen din til tjenesten på flere måter. Det er klart og enkelt å følge, så det er et flott tillegg til alle apper. Vær oppmerksom på at autentiserings-API er bygget ved hjelp av OAuth, noe som gjør det veldig trygt, men gir utviklere problemer med å koble til APIen. Fremgangsmåten for å koble til API-en er forklart i OAuth-dokumentasjonen til APIen. Det er forskjellige måter å koble til, men i denne opplæringen skal vi bruke 3-legget autorisasjon. Denne metoden ber om en forespørsel, og bruker brukeren til en påloggingsside og samler AccessToken. Denne prosessen kan være litt komplisert, spesielt hvis du prøver å legge til bare ett eller to funksjoner i APIen. Heldigvis er det et bibliotek utviklet av Daniel Crenna kalt Tweetsharp. Tweetsharp er et flott verktøy som vil forenkle kommunikasjonen mellom WP7 Apps og Twitter. Det er veldig enkelt å bruke og gir deg tilgang til hele Twitter-API fra bare ett bibliotek:
TweetSharp er et Twitter API-bibliotek som forenkler oppgaven med å legge til Twitter på skrivebordet, web og mobilapplikasjoner. Du kan bygge enkle widgets eller komplekse applikasjonspakker med TweetSharp.
Du kan finne mer informasjon om prosjektet ved å gå til deres nettside og se gjennom de verste eksempelprosjektene.
Biblioteket er bare tilgjengelig gjennom NuGet, så hvis Visual Studio ikke inkluderer NugGet Package-sjefen, må du laste den ned fra NuGets hjemmeside. For å laste ned pakken, åpne Package Manager Console i Visual Studio (Verktøy> Library Package Manager> Package Manager Console), og skriv inn følgende kommando:Installer-pakke TweetSharp
.
Nå som vi har biblioteket, kan vi legge det til vårt prosjekt. Legg til en ny import på filen "MainPage.xaml.cs":
bruker Tweetsharp
For å koble en app til en brukers Twitter-konto må vi først få tilgang og tillatelse til Twitter-kontoen. Dette gjøres via Twitters nettside. Derfor må vi legge til en nettleser. Nettleseren skal dekke det meste av siden, slik at det i utgangspunktet vil bli kollapset, og deretter endres for synlig bare når brukeren må logge inn. I filen "MainPage.xaml" legger du til en ny WebBrowser like under ContentPanel:
Nå som vi har lagt til Tweetsharp og nettleseren, kan vi fortsette og koble appen til Twitter. Tilkoblingen er gjort gjennom et TwitterService-objekt. Derfor må vi opprette en privat global variabel og initialisere den på konstruktøren:
privat TwitterService klient; // Constructor public MainPage () InitializeComponent (); klient = ny TwitterService (consumerKey, consumerSecret);
Første gang en bruker klikker på "Tweet" -knappen, må du sende ham til Twitter-innloggingssiden, slik at han kan gi deg den nødvendige tillatelsen til appen din. For å gjøre dette, be om en RequestToken. Når du har token, gå til påloggingssiden. Først må du legge til klikkhendelsen på klikkknappen din:
Legg nå den metoden til koden:
privat tomt tweetClick (objekt sender, RoutedEventArgs e) // Be om token
Før vi kan legge til koden for token, trenger vi to ting, en boolsk variabel som forteller oss om brukeren allerede er logget inn, og en variabel som vil lagre RequestToken. La oss legge til dette i koden over konstruktøren:
privat OAuthRequestToken requestToken; privat bool userAuthenticated = false;
Med variablene klare, kan vi gå og lage metoden for behandling av vår RequestedToken. Dette vil sjekke for feil. Hvis alt ble gjort riktig, lagre du token og ta brukeren til påloggingsadressen fra RequestToken:
privat ugyldig prosessRequestToken (OAuthRequestToken token, TwitterResponse respons) if (token == null) Dispatcher.BeginInvoke (() => MessageBox.Show ("Feil å få forespørselstoken");); ellers requestToken = token; Dispatcher.BeginInvoke (() => Browser.Visibility = System.Windows.Visibility.Visible; Browser.Navigate (client.GetAuthorizationUri (requestToken)););
Legg nå koden for å be om Token inne i klikk-hendelsesmetoden:
// Hvis brukeren allerede er logget inn, bare send tweet, ellers få RequestToken if (userAuthenticated) // send Tweet, dette er bare en plassholder, vi vil legge til den faktiske koden senere Dispatcher.BeginInvoke (() => MessageBox.Show ("Plassholder for tweet sending");); ellers klient.GetRequestToken (processRequestToken);
Etter at brukeren logger på og aksepterer appen vår, vil Twitter ta oss med til en nettadresse som inneholder en verifikatorkode som vi trenger for å be om AccessToken. La oss legge til denne hendelsesmetoden i nettleseren vår
Bruk arrangementskoden:
privat ugyldig nettleserNavigated (objekt sender, System.Windows.Navigation.NavigationEventArgs e)
For å hente verifikasjonskoden fra nettadressen trenger vi en parser, som i dette tilfellet er en metode som finnes på biblioteket Hammock extensions. Kopier denne koden og legg den til i prosjektet ditt:
// Fra Hammock.Extensions.StringExtensions.cs offentlig statisk IDictionaryParseQueryString (strengspørring) // [DC]: Denne metoden deaktiverer ikke URL-adressen, og kan ikke håndtere dekodet inngang hvis (spørring.StartsWith ("?")) Query = query.Substring (1); hvis (spørring.Equals (streng.Empty)) returner ny ordbok (); var parts = query.Split (ny [] '&'); returnere deler.Selg (del => del.Split (nytt [] '=')) ToDictionary (pair => pair [0], pair => pair [1]);
Med denne metoden kan vi gå og få verifiserings-koden på nettleserNavigated event-metoden:
privat ugyldig nettleserNavigated (objekt sender, System.Windows.Navigation.NavigationEventArgs e) hvis (e.Uri.AbsoluteUri.Contains ("oauth_verifier")) var values = ParseQueryString (e.Uri.AbsoluteUri); streng verifier = verdier ["oauth_verifier"]; // getTheAccessToken Dispatcher.BeginInvoke (() => Browser.Visibility = System.Windows.Visibility.Collapsed;);
På samme måte som ved RequestToken må vi lage en metode som håndterer resultatet av AccessToken-forespørselen. Når vi mottar resultatet, må vi se etter feil. Hvis forespørselen ble gjort, godkjenner vi brukeren, og sender Tweet:
privat ugyldig prosessAccessToken (OAuthAccessToken token, TwitterResponse respons) if (token == null) Dispatcher.BeginInvoke (() => MessageBox.Show ("Feil å skaffe tilgangstoken");); ellers client.AuthenticateWith (token.Token, token.TokenSecret); userAuthenticated = true; // Send Tweet, vi vil legge til denne koden senere
Med dette fullført, gå til nettleserNavigert metode og endre kommentaren getTheAccessToken med følgende linje:
client.GetAccessToken (requestToken, verifier, processAccessToken);
Når vi sender en Tweet vil vi vite om den ble sendt. Det er derfor vi trenger en annen metode for å håndtere en Tweet. Her er koden vi må legge til:
Private void tweetResponse (TwitterStatus tweet, TwitterResponse respons) if (response.StatusCode == HttpStatusCode.OK) Dispatcher.BeginInvoke (() => MessageBox.Show ("Tweet posted successfully");); ellers Dispatcher.BeginInvoke (() => MessageBox.Show ("Feil, prøv igjen senere"););
Endelig, gå og endre Send Tweet-kommentaren for prosessAccessToken og tweetClick-metodene med følgende linje:
Dispatcher.BeginInvoke (() => client.SendTweet (Message.Text, tweetResponse));
For øyeblikket skal appen være helt funksjonell, så gå og test den. Skriv inn en melding, klikk på "Tweet" knappen og følgende skjerm skal vises.
Deretter skal en melding som sier "Tweet posted successfully" vises:
Hvis du går til Twitter-kontoen, bør du også kunne se Tweet du nettopp har sendt:
Gratulerer! Du har nå en app som kan koble til Twitter! Men vi er ikke ferdige ennå. Det er noen områder vi kan forbedre.
Hver gang en bruker åpner appen din, må han gå gjennom Twitter-innloggingssiden. Dette er noe brukere ikke liker. De vil registrere seg en gang og kunne Tweet uten problemer. Dette problemet er lett å løse. Vi må lagre AccessToken som vi fikk første gang brukeren logger inn. Når det er ferdig, blir det lagret på IsolatedStorage og vil alltid være tilgjengelig. Dette kan gjøres ved å bruke følgende metode:
private void saveAccessToken (OAuthAccessToken token) hvis (IsolatedStorageSettings.ApplicationSettings.Contains ("accessToken")) IsolatedStorageSettings.ApplicationSettings ["accessToken"] = token; ellers IsolatedStorageSettings.ApplicationSettings.Add ("accessToken", token); IsolatedStorageSettings.ApplicationSettings.Save ();
Og importere IsolatedStorage-biblioteket:
bruker System.IO.IsolatedStorage;
Nå kan vi lagre den innhentede AccessToken fra prosessenAccessToken-metoden:
privat ugyldig prosessAccessToken (OAuthAccessToken token, TwitterResponse respons) if (token == null) Dispatcher.BeginInvoke (() => MessageBox.Show ("Feil å skaffe tilgangstoken");); ellers client.AuthenticateWith (token.Token, token.TokenSecret); saveAccessToken (token); userAuthenticated = true; Dispatcher.BeginInvoke (() => client.SendTweet (Message.Text, tweetResponse));
Med token allerede på IsolatedStorage, trenger vi en metode for å hente den. Gå videre og legg til følgende metode:
privat OAuthAccessToken getAccessToken () hvis (IsolatedStorageSettings.ApplicationSettings.Contains ("accessToken")) returnerer IsolatedStorageSettings.ApplicationSettings ["accessToken"] som OAuthAccessToken; ellers returnere null;
Denne funksjonen skal kalles fra konstruktøren fordi vi vil være logget inn fra begynnelsen:
// Constructor public MainPage () InitializeComponent (); klient = ny TwitterService (consumerKey, consumerSecret); // Chek hvis vi allerede har Autehntification data var token = getAccessToken (); hvis (token! = null) client.AuthenticateWith (token.Token, token.TokenSecret); userAuthenticated = true;
Vær også oppmerksom på at brukeren kan avvise tillatelsen fra appen vår, så vi må oppdage dette og be om tillatelse på nytt. Denne gjenkjenningen bør gjøres på tweetResponse-metoden, siden det er der Twitter informerer deg om et problem med innlegget ditt. Endre koden fra tweetResponse til følgende:
Private void tweetResponse (TwitterStatus tweet, TwitterResponse respons) if (response.StatusCode == HttpStatusCode.OK) Dispatcher.BeginInvoke (() => MessageBox.Show ("Tweet posted successfully");); ellers hvis (response.StatusCode == HttpStatusCode.Unauthorized) saveAccessToken (null); userAuthenticated = false; Dispatcher.BeginInvoke (() => MessageBox.Show ("Autentiseringsfeil");); else Dispatcher.BeginInvoke (() => MessageBox.Show ("Feil, prøv igjen senere"););
En siste funksjon å legge til i appen din er å la brukeren lukke nettleseren hvis han vil. Akkurat nå hvis nettleseren vises, er den eneste måten å lukke på ved å logge inn eller med en feil. Du kan gi brukeren dette alternativet ved hjelp av tilbakeknappen:
beskyttet overstyring ugyldig OnBackKeyPress (System.ComponentModel.CancelEventArgs e) if (Browser.Visibility == System.Windows.Visibility.Visible) Browser.Visibility = System.Windows.Visibility.Collapsed; e.Cancel = true; base.OnBackKeyPress (e);
Denne opplæringen er en kort forklaring på hva du kan gjøre med Tweetsharp og Twitter. Hvis du er interessert i å øke funksjonaliteten til appen din, kan du som å nevne, retweets, direkte meldinger og flere andre funksjoner gå til Tweetsharps nettsted, og du vil finne alt du trenger for å begynne å utvikle en flott app. Jeg håper du likte denne opplæringen, og at den vil være nyttig for fremtidige prosjekter.