Windows Phone Koble til med Facebook

I denne veiledningen vil vi snakke om hvordan du skal samhandle med Facebook API, og alle verktøyene du trenger for å kunne koble deg til det. Spesielt vil appen vi skal lage, kunne koble til brukerens Facebook-konto og oppdatere statusen deres. La oss komme i gang!


Trinn 1: Visual Studio Project Creation

Først av alt må vi opprette et nytt prosjekt med Visual Studio. Vi skal bare bygge en enkel app, så velg alternativet "Windows Phone App":


Hvis du bruker Visual Studio 2012 med den nye WP8 SDK, vil du bli bedt om Target Windows Phone OS versjonen. Hvis det er tilfelle, velg bare 7.1 OS.


Trinn 2: Legge til brukergrensesnittet

Med prosjektet som allerede er opprettet, åpner du "MainPage.xaml" -filen hvis den ikke allerede er åpen og endrer tekstboksen for standardprogram og sidenavn:

    

Nå i vårt ContentPanel-nett, legger vi til to rader, en for en tekstboks der brukeren vil legge inn den nye statusen, og den andre for knappen for å sende statusen:

      

Og så legger du bare til en tekstboks på den første raden med navnet "melding" og en knapp på den andre:

       

På slutten bør du ha dette:


Trinn 3: Opprette utviklerkontoer

Facebook har en svært omfattende API for å aktivere samspill mellom apper og nettstedet. API gir appen din muligheten til å koble til og samhandle med brukerens FB-konto.

For å koble vår app til facebook, må vi registrere oss som Facebook-utvikler. For å opprette en Facebook-utvikler konto, gå til Facebook Developer Site,
så logg inn med din Facebook-konto eller opprett en hvis du ikke allerede har en. Når du allerede har logget inn, klikk på "Register Button" og følg instruksjonene.


Trinn 4: Registrere en ny app

Nå lager en ny app ved å gå til Apps-menyen, og velg deretter "Create New App" -knappen.

Etter at du har opprettet appen din, vil du se siden for appinnstillinger, og på den et app-ID / API-nøkkelnummer.

Kopier dette nummeret, returner til prosjektet, og inne i "MainPage.xaml.cs" -filen, opprett en ny global konstant streng oven på konstruktøren din:

 private const streng FBApi = "DIN API KEY GOES HERE"; // Constructor public MainPage () InitializeComponent (); 

Trinn 5: Velge Facebook C # SDK

Facebook har noen gode SDK'er for iOS og Android, men dessverre ingen for WP7, så for å koble til Facebook fra en WP7 App, har vi to alternativer: (1) lag alle samtale manuelt, eller (2) bruk Facebook C # SDK, en ikke-offisiell SDK laget spesielt for C # apps.

For denne opplæringen bruker vi C # SDK. Den har alle metoder fra Facebook API allerede integrert, så det vil gjøre oppgaven vår enklere!


Trinn 6: Laster ned SDK

Dette SDK er bare tilgjengelig gjennom NuGet, så hvis Visual Studio ikke inkluderer NugGet Package manager,
Du må laste den ned fra NuGet-kompaniet.
For å laste ned pakken, åpne Package Manager Console på Visual Studio (Verktøy> Library Package Manager> Package Manager Console), og skriv inn følgende kommando:Installer-pakke Facebook . Hvis du har problemer med den nedlastede versjonen, så prøv å bruke denne kommandoen: Installer-pakke Facebook-versjon 6.0.24


Trinn 7: Legg til FB SDK til din app

Nå som vi har SDK, legger vi det til vårt prosjekt. Legg til en ny import på filen "MainPage.xaml.cs":

 bruker Facebook

Trinn 8: Legge til en nettleser

For at en bruker skal koble til Facebook, må han først gi oss tilgang og tillatelse til hans FB-konto. Dette gjøres via Facebook-nettsiden, og derfor må vi legge til en nettleser i vår søknad. Nettleseren skal dekke det meste av siden, slik at det i utgangspunktet vil bli kollapset, og da endres det for å være synlig bare når brukeren må logge inn. I filen "MainPage.xaml" legger du til en ny WebBrowser like under ContentPanel:

       

Trinn 9: Koble til med Facebook

Med alt riktig satt, kan vi nå begynne å kode vår søknad. Opprett en ny variabel for FacebookClient, og kaller den bare klient. Dette er hvor alle tilkoblinger vil bli gjort. Også initiere variabelen inne i konstruktøren:

 privat FacebookClient-klient; // Constructor public MainPage () InitializeComponent (); klient = ny FacebookClient (); 

Trinn 10: Legge til klikkhendelsen

For å faktisk poste noe, må brukeren klikke på "Post" -knappen. La oss gå og legge til et klikkhendelse til den knappen:

 

På kodesiden, når brukeren klikker på knappen, må han logge inn med Facebook og godkjenne aksepterer vår App. For denne prosessen må vi gjøre nettleseren synlig og navigere til en URL som kunden vil gi oss, men før det må vi sende noen innledende parametere:

 privat tomrom PostClicked (objekt sender, RoutedEventArgs e) // Klientparametre var parametere = ny ordbok(); parametere ["client_id"] = FBApi; parametere ["redirect_uri"] = "https://www.facebook.com/connect/login_success.html"; parametere ["response_type"] = "token"; parametere ["display"] = "touch"; // Omfanget er det som gir oss tilgang til brukerdataene, i dette tilfellet // vi vil bare publisere på veggenparametrene ["scope"] = "publish_stream"; Browser.Visibility = System.Windows.Visibility.Visible; Browser.Navigate (client.GetLoginUrl (parametre)); 

Hvis du kjører koden din akkurat nå og klikker på Post-knappen, skal nettleseren vises, og viser Facebook-innloggingssiden:


Trinn 11: Legge til en navigeringshendelse

Etter at brukeren har logget på Facebook, navigeres nettleseren til en nettadresse som vil inneholde vår tilgangstoken for API-anrop. Når vi henter det, må vi bare tildele det til vår klient. En ting å ta hensyn til er at det er mange sider som nettleseren kan navigere (feil passord, bruker avvist vår app, etc.), så vi må prøve å få token akkurat når vi er sikre på at vi er på riktig side.

Legg til den navigerte hendelsen i nettleseren:

 

Legg deretter til følgende linjer til hendelseshandleren:

 privat tomrom BrowserNavitaged (objekt sender, System.Windows.Navigation.NavigationEventArgs e) FacebookOAuthResult oauthResult; // Kontroller at nettadressen faktisk har tilgangstoken hvis (! Client.TryParseOAuthCallbackUrl (e.Uri, ut oauthResult)) return;  // Kontroller at brukeren har godkjent vår app, ellers bare vis feilen hvis (oauthResult.IsSuccess) // Process result client.AccessToken = oauthResult.AccessToken; // Skjul nettleseren Browser.Visibility = System.Windows.Visibility.Collapsed; PostToWall ();  else // Process Error MessageBox.Show (oauthResult.ErrorDescription); Browser.Visibility = System.Windows.Visibility.Collapsed; 

Trinn 12: Legge til en postmetode

Nå som vi har tilgang, kan vi fortsette og faktisk legge inn på brukerens veggen. Opprett en ny privat tomrom-metode kalt postToWall, og legg til følgende linjer:

 privat tomt PostToWall () var parametere = ny ordbok(); parametere ["message"] = Message.Text; client.PostAsync ("meg / feed", parametere); 

Den eneste parameteren som vi må sende til denne anropen, er meldingen som vi skal legge inn på brukerens veggen. Meldingen vi sender vil være teksten fra tekstboksen vår, kalt "Melding". Meldingen vil bli lagt ut asynkront, slik at PostCompleted-hendelse blir kalt når oppgaven er ferdig, derfor trenger vi ikke legge til en hendelsehandler for det.


Trinn 13: PostCompleted Event Handler

Siden vi bare vil legge til hendelseshandleren en gang, legger vi den til på byggeren, like etter at vår klient er initialisert. Inne i handleren, kontroller om innlegget ble fullført, eller hvis det var feil under operasjonene, varsler du brukeren:

 // Constructor public MainPage () InitializeComponent (); klient = ny FacebookClient (); client.PostCompleted + = (o, args) => // Kontrollerer feil hvis (args.Error! = null) Dispatcher.BeginInvoke (() => MessageBox.Show (args.Error.Message));  else Dispatcher.BeginInvoke (() => MessageBox.Show ("Melding lagt ut")); ; 

Trinn 14: Testing av koden

Med denne koden, bør vår App allerede kunne legge inn en melding via brukerens Facebook-konto.

Kjør appen i emulatoren, prøv å legge inn en testmelding du vil ha, og til slutt skal du motta en melding som forteller deg: "Meldingen er lagt ut".

Åpne nå Facebook-kontoen i en nettleser, og du bør se meldingen du nettopp har postet:

Gratulerer! Du har nå en app som kan koble til Facebook, men det er fortsatt noen ting vi kan forbedre. For eksempel kan vi prøve å lagre tilgangstoken, slik at brukerne ikke trenger å logge inn hver gang de åpner appen.


Trinn 15: Lagre tilgangstoken

Vi skal lagre token for programinnstillingene, men for å gjøre dette må vi først importere IsolatedStorage-biblioteket:

 bruker System.IO.IsolatedStorage;

Med dette biblioteket kan vi nå bare fortsette og opprette metoden:

 private void SaveToken (String token) // Hvis det er den første lagre, opprett nøkkelen på ApplicationSettings og lagre token, ellers bare endre nøkkelen hvis (! IsolatedStorageSettings.ApplicationSettings.Contains ("token")) IsolatedStorageSettings.ApplicationSettings. Legg til ("token", token); ellers IsolatedStorageSettings.ApplicationSettings ["token"] = token; IsolatedStorageSettings.ApplicationSettings.Save (); 

Trinn 16: Hentning med den lagrede toppen

Nå må vi få token fra IsolatedStorage:

 privat streng GetToken () // Hvis det ikke er noe Token på minnet, returner du bare null, ellers returnerer token som streng hvis (! IsolatedStorageSettings.ApplicationSettings.Contains ("token")) returnerer null; ellers returnerer IsolatedStorageSettings.ApplicationSettings ["token"] som streng; 

Trinn 17: Logg på med den lagrede toppen

Med disse to metodene kan vi nå hente token og tildele den til vår klient hver gang appen åpnes:

 // Constructor public MainPage () InitializeComponent (); klient = ny FacebookClient (); client.PostCompleted + = (o, args) => // Kontrollerer feil hvis (args.Error! = null) Dispatcher.BeginInvoke (() => MessageBox.Show (args.Error.Message));  else Dispatcher.BeginInvoke (() => MessageBox.Show ("Melding lagt ut")); ; // Kontrollerer lagret token hvis (GetToken ()! = Null) client.AccessToken = GetToken (); 

Trinn 18: Kontrollerer utløpte tegn

En annen ting å ta hensyn til er at brukeren kan avvise tillatelsene til appen vår, så vi må oppdage dette og be om tillatelser igjen. Denne gjenkjenningen skal gjøres på vår PostCompleted-behandler, siden det er Facebook der vil varsle oss om et problem med vårt innlegg. Legg til følgende linjer i PostCompleted Handler:

 client.PostCompleted + = (o, args) => // Kontrollerer feil hvis (args.Error! = null) // Autorisasjonsfeil hvis (args.Error er FacebookOAuthException) Dispatcher.BeginInvoke (() => MessageBox .Vis ("Autorisasjonsfeil")); // Fjern selve token siden det ikke virker lenger. SaveToken (null); client.AccessToken = null;  else Dispatcher.BeginInvoke (() => MessageBox.Show (args.Error.Message));  else Dispatcher.BeginInvoke (() => MessageBox.Show ("Melding lagt ut")); ;

Trinn 19: Endre tilbakeknappen

Som et siste skritt må vi gi brukeren muligheten til å lukke nettleseren når det er ønskelig.
Denne handlingen skal gis tilbake-knappen, så vi må bare endre hendelseshandleren for å oppnå det.

Legg til følgende metode i koden din:

 beskyttet overstyring ugyldig OnBackKeyPress (System.ComponentModel.CancelEventArgs e) // Hvis nettleseren er synlig, skjul den og avbryt navigasjonshendelsen hvis (Browser.Visibility == System.Windows.Visibility.Visible) Browser.Visibility = System.Windows .Visibility.Collapsed; e.Cancel = true;  base.OnBackKeyPress (e); 

Trinn 20: Det endelige produktet

Test appen din igjen, nå har du en fullt operativ Facebook-app!


Hvor å gå fra her

Facebook handler ikke bare om å oppdatere statusen din. Det er mange andre ting du kan legge til i Appen din, som å dele bilder, sende appanbefalinger til venner, etc. Facebook C # SDK tilbyr mange muligheter for Facebook-integrasjon. For å lære mer om det, gå og sjekk ut deres nettside og begynn å jobbe med å gjøre appen din mer sosial!