WP7 Integrering av Twitter med din app

Med Twitter-integration kan användare dela appinnehåll på sin tidslinje. På multimediaprogram kan en användare tweetera låten han lyssnar på, eller om appen är ett spel kan en ny upplåst prestation tweeted. Integrering av Twitter till din app kommer att hjälpa det att sticka ut och göra det möjligt för användare att marknadsföra det.


Steg 1: Visual Studio Project Creation

För att börja, måste vi skapa ett nytt projekt på Visual Studio. För denna handledning behöver vi en enkel app, så välj alternativet "Windows Phone App":

Om du använder Visual Studio 2012 med den nya WP8 SDK-filen, kommer du att bli ombedd om Target Windows Phone OS Version. Om så är fallet, välj 7.1 OS.


Steg 2: Bygga gränssnittet

Nu när projektet är skapat, öppna filen "MainPage.xaml", om den inte redan är öppen, och ändra textrutan för standardprogram och sidnamn:

    

Nu i ContentPanel Grid läggs två rader, en för en TextBox där användaren kommer att mata in den nya statusen och den andra för knappen för att skicka in statusen:

      

Lägg sedan till en textbox på första raden med namnet "Meddelande" och en knapp på den andra raden:

       

I slutet borde du ha det här:


Steg 3: Skapa ett Twitter Developer-konto

För att ansluta till Twitter behöver du först ett utvecklarkonto. Gå till Twitter utvecklarens hemsida och logga in med ditt Twitter-konto, eller skapa en om du inte redan har en.


Steg 4: Registrera den nya appen

När du är inloggad, gå till sidan "Mina program" och klicka sedan på "Skapa en ny applikation" -knapp. På följande sida fyller du i ansökningsuppgifterna och om du redan har en webbplats, mata in din webbplats på fälten Webbplats och Återuppringningsadress. Använd annars en platshållare som "http://www.google.com". Efter det här steget visas en ny sida som ger dig två tokens, "Access token" och "Access token secret". Kopiera dessa koder och lägg till dem som konstanta strängar ovanpå din "MainPage.xaml.cs" konstruktör:

 private const string consumerKey = "din nyckel här"; private const string consumerSecret = "din hemlighet här"; // Constructor public MainPage () InitializeComponent (); 

Steg 5: Introduktion till Tweetsharp

Twitter har ett komplett API som låter dig ansluta din app till tjänsten på flera sätt. Det är klart och enkelt att följa, så det är en bra tillägg till alla appar. Observera att autentiserings API är byggt med hjälp av OAuth, vilket gör det väldigt säkert, men ger utvecklare problem med att ansluta till API: n. Stegen för att ansluta till API förklaras i OAuth-dokumentationen av API: n. Det finns olika sätt att ansluta, men i den här handledningen kommer vi att använda 3-läggs tillståndet. Den här metoden frågar efter en förfrågan-token och tar sedan användaren till en inloggningssida och samlar AccessToken. Denna process kan vara lite komplicerad, särskilt om du försöker lägga till bara en eller två funktioner i API: n. Lyckligtvis finns ett bibliotek utvecklat av Daniel Crenna som heter Tweetsharp. Tweetsharp är ett utmärkt verktyg som kommer att förenkla kommunikationen mellan dina WP7 Apps och Twitter. Det är mycket enkelt att använda och ger dig tillgång till hela Twitter API från bara ett bibliotek:

TweetSharp är ett Twitter API-bibliotek som förenklar uppgiften att lägga till Twitter på ditt skrivbord, webb och mobila applikationer. Du kan bygga enkla widgets eller komplexa applikationsserier med TweetSharp.

Du kan hitta mer information om projektet genom att gå till deras hemsida och titta igenom de värdprojekt som finns.


Steg 6: Hämtning av Tweetsharp

Biblioteket är endast tillgängligt via NuGet, så om din Visual Studio inte innehåller NugGet Package-hanteraren behöver du ladda ner den från NuGets hemsida. För att ladda ner paketet öppnar du pakethanterarkonsolen i Visual Studio (Verktyg> Bibliotekspakethanterare> Pakethanterarkonsol) och anger följande kommando:Installera-paket TweetSharp.


Steg 7: Lägga till Tweetsharp i projektet

Nu när vi har biblioteket kan vi lägga till det i vårt projekt. Lägg till en ny import i filen "MainPage.xaml.cs":

 använder Tweetsharp

Steg 8: Lägga till en webbläsare

För att kunna ansluta en app till en användares Twitter-konto måste vi först ges åtkomst och tillåtelse till Twitter-kontot. Detta görs via Twitters hemsida. Därför måste vi lägga till en webbläsare. Webbläsaren ska täcka det mesta av sidan, så i början kommer det att kollapsas och ändras så att det bara är synligt när användaren behöver logga in. I filen "MainPage.xaml" lägg till en ny Webbrowser precis under ContentPanel:

       

Steg 9: Anslut till Twitter

Nu när vi har lagt till Tweetsharp och webbläsaren kan vi fortsätta och ansluta vår app till Twitter. Anslutningen görs via ett TwitterService-objekt. Därför behöver vi skapa en privat global variabel och initiera den på konstruktören:

 privat TwitterService-klient // Constructor public MainPage () InitializeComponent (); klient = ny TwitterService (consumerKey, consumerSecret); 

Steg 10: Lägga till Click Event

Första gången en användare klickar på din "Tweet" -knapp måste du skicka honom till Twitter-inloggningssidan så att han kan ge dig det nödvändiga tillståndet för din app. För att göra detta, be om en RequestToken. När du har token, gå till inloggningssidan. Först måste du lägga till klickhändelsen på din Klicka-knapp:

 

Lägg nu till den här metoden till koden:

 privat tomt tweetClick (objekt avsändare, RoutedEventArgs e) // Fråga efter token

Innan vi kan lägga till koden för token behöver vi två saker, en boolesvariabel som berättar om användaren redan är inloggad och en variabel som sparar RequestToken. Låt oss lägga till detta till koden ovanför konstruktören:

 privat OAuthRequestToken requestToken; privat bool userAuthenticated = false;

Steg 11: Behandling av RequestToken

Med variablerna klara kan vi gå och skapa metoden för behandling av vår RequestedToken. Detta kommer att kontrollera om det finns fel. Om allt gjordes korrekt, spara sedan token och ta användaren till inloggningsadressen från RequestToken:

 Private void processRequestToken (OAuthRequestToken token, TwitterResponse svar) if (token == null) Dispatcher.BeginInvoke (() => MessageBox.Show ("Fel att få begäran token");); annars requestToken = token; Dispatcher.BeginInvoke (() => Browser.Visibility = System.Windows.Visibility.Visible; Browser.Navigate (client.GetAuthorizationUri (requestToken));); 

Lägg nu till koden för att begära Token i Click-händelsemetoden:

 // Om användaren redan är inloggad, skicka bara tweeten, annars få RequestToken if (userAuthenticated) // skicka Tweet, det här är bara en platshållare, vi lägger till den aktuella koden senare Dispatcher.BeginInvoke (() =>  MessageBox.Show ("Placeholder for tweet sending");); annars client.GetRequestToken (processRequestToken);

Steg 12: Lägga till navigerad händelse

När användaren loggar in och accepterar vår app tar Twitter oss till en webbadress med en verifierarkod som vi behöver för att begära AccessToken. Låt oss lägga till denna händelsemetod i vår webbläsare

 

Använd händelsekoden:

 privat tomgång webbläsareNavigated (objekt avsändare, System.Windows.Navigation.NavigationEventArgs e) 

För att hämta verifierarkoden från webbadressen behöver vi en parser, vilket i det här fallet är en metod som finns i biblioteket Hammock extensions. Kopiera den här koden och lägg till den i ditt projekt:

 // Från Hammock.Extensions.StringExtensions.cs offentliga statiska IDictionary ParseQueryString (string query) // [DC]: Den här metoden avkodar inte URL och kan inte hantera avkodad inmatning om (query.StartsWith ("?")) Query = query. Substring (1); om (fråga.Equals (string.Empty)) returnera ny ordbok();  var parts = query.Split (nytt [] '&'); returnera delar. Välj (del => del.Split (nytt [] '=')) ToDictionary (par => par [0], par => par [1]); 

Med den här metoden kan vi gå och få verifierarkoden i webbläsarenNavigated event-metoden:

 privat tomt webbläsareNavigated (objekt avsändare, System.Windows.Navigation.NavigationEventArgs e) om (e.Uri.AbsoluteUri.Contains ("oauth_verifier")) var values ​​= ParseQueryString (e.Uri.AbsoluteUri); sträng verifier = värden ["oauth_verifier"]; // getTheAccessToken Dispatcher.BeginInvoke (() => Browser.Visibility = System.Windows.Visibility.Collapsed;); 

Steg 13: Behandling av AccessToken

Precis som hos RequestToken måste vi skapa en metod som hanterar resultatet av AccessToken-förfrågan. När vi får resultatet måste vi kontrollera om det finns fel. Om förfrågan gjordes, godkänner vi sedan användaren och skickar Tweet:

 privat void processAccessToken (OAuthAccessToken token, TwitterResponse svar) if (token == null) Dispatcher.BeginInvoke (() => MessageBox.Show ("Fel att få åtkomsttoken");); annars client.AuthenticateWith (token.Token, token.TokenSecret); userAuthenticated = true; // Skicka Tweet, vi lägger till den här koden senare

Med detta avslutat, gå till webbläsarenNavigated-metoden och ändra kommandot getTheAccessToken med följande rad:

 client.GetAccessToken (requestToken, verifier, processAccessToken);

Steg 14: Hantera ett Tweet-svar

När vi skickar en Tweet vill vi veta om den skickades. Det är därför vi behöver en annan metod för att hantera en Tweet. Här är koden som vi behöver lägga till:

 privat void tweetResponse (TwitterStatus tweet, TwitterResponse svar) if (response.StatusCode == HttpStatusCode.OK) Dispatcher.BeginInvoke (() => MessageBox.Show ("Tweet posted successfully");); annars Dispatcher.BeginInvoke (() => MessageBox.Show ("Fel, försök igen senare");); 

Slutligen, gå och ändra Skicka Tweet-kommentaren för processAccessToken och tweetClick-metoderna med följande rad:

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

Steg 15: Testa din app

Just nu måste din app vara helt funktionell, så gå och testa den. Ange något meddelande klicka på "Tweet" knappen och följande skärm ska visas.

Därefter ska ett meddelande som säger "Tweet posted successfully" visas:

Om du går till Twitter-kontot ska du också kunna se Tweet du just skickat:

grattis! Du har nu en app som kan ansluta till Twitter! Men vi är inte färdiga än. Det finns några områden vi kan förbättra.


Steg 16: Spara AccessToken

Varje gång en användare öppnar din app måste han gå igenom Twitter-inloggningssidan. Det här är något som användare inte gillar. De vill registrera sig en gång och kunna Tweet utan problem. Detta problem är lätt att lösa. Vi måste spara AccessToken som vi fick första gången användaren loggade in. När det är klart sparas det på IsolatedStorage och kommer alltid att vara tillgängligt. Detta kan göras genom att använda följande metod:

 privat tomgång saveAccessToken (OAuthAccessToken token) om (IsolatedStorageSettings.ApplicationSettings.Contains ("accessToken")) IsolatedStorageSettings.ApplicationSettings ["accessToken"] = token; annars IsolatedStorageSettings.ApplicationSettings.Add ("accessToken", token); IsolatedStorageSettings.ApplicationSettings.Save (); 

Och importera IsolatedStorage-biblioteket:

 Använda System.IO.IsolatedStorage;

Nu kan vi spara den erhållna AccessToken från processenAccessToken-metoden:

 privat void processAccessToken (OAuthAccessToken token, TwitterResponse svar) if (token == null) Dispatcher.BeginInvoke (() => MessageBox.Show ("Fel att få åtkomsttoken");); annars client.AuthenticateWith (token.Token, token.TokenSecret); saveAccessToken (token); userAuthenticated = true; Dispatcher.BeginInvoke (() => client.SendTweet (Message.Text, tweetResponse)); 

Steg 17: Hämta AccessToken

Med token redan på IsolatedStorage behöver vi en metod för att hämta den. Fortsätt och lägg till följande metod:

 privat OAuthAccessToken getAccessToken () if (IsolatedStorageSettings.ApplicationSettings.Contains ("accessToken")) returnerar IsolatedStorageSettings.ApplicationSettings ["accessToken"] som OAuthAccessToken; annars återgå null; 

Den här funktionen bör hämtas från konstruktören eftersom vi vill logga in från början:

 // Constructor public MainPage () InitializeComponent (); klient = ny TwitterService (consumerKey, consumerSecret); // Chek om vi redan har Autehntification data var token = getAccessToken (); om (token! = null) client.AuthenticateWith (token.Token, token.TokenSecret); userAuthenticated = true; 

Steg 18: Kontrollera utgått Tokens

Tänk dessutom på att användaren kan avvisa tillståndet från vår app, så vi måste upptäcka det här och be om tillåtelse igen. Denna detektion bör göras på vår tweetResponse-metod, eftersom det är där Twitter meddelar dig om något problem med ditt inlägg. Ändra koden från tweetResponse till följande:

 privat tomt tweetResponse (TwitterStatus tweet, TwitterResponse svar) if (response.StatusCode == HttpStatusCode.OK) Dispatcher.BeginInvoke (() => MessageBox.Show ("Tweet posted successfully"););  annars om (response.StatusCode == HttpStatusCode.Unauthorized) saveAccessToken (null); userAuthenticated = false; Dispatcher.BeginInvoke (() => MessageBox.Show ("Authentication Error"););  else Dispatcher.BeginInvoke (() => MessageBox.Show ("Fel, försök igen senare");); 

Steg 19: Ändra bakåtknappen

En sista funktion att lägga till i din app är att tillåta användaren att stänga webbläsaren om han vill. Just nu om webbläsaren visas är det enda sättet att stänga det genom att logga in eller med ett fel. Du kan ge användaren det här alternativet med hjälp av bakåtknappen:

 skyddad överstyrning ogiltig OnBackKeyPress (System.ComponentModel.CancelEventArgs e) if (Browser.Visibility == System.Windows.Visibility.Visible) Browser.Visibility = System.Windows.Visibility.Collapsed; e.Cancel = true;  base.OnBackKeyPress (e); 

Vart ska man åka ifrån här

Denna handledning är en kort förklaring av vad du kan göra med Tweetsharp och Twitter. Om du är intresserad av att öka appens funktionalitet, som att få information, retweets, direktmeddelanden och flera andra funktioner, gå till Tweetsharps webbplats och du hittar allt du behöver för att börja utveckla en bra app. Jag hoppas att du haft denna handledning och att det kommer att vara användbart för dina framtida projekt.