Verfasst von: bletra | 21. Juni 2011

Facebook-Pinnwandeintrag mit einer C# WPF-Desktopanwendung

Autoren: 2 Studierende der Veranstaltung .Net Framework und C#

Facebook wird immer beliebter und immer mehr Facebook-Apps sprießen aus dem Boden. Jetzt stellt sich die Frage: Wie kann ich meine C#-WPF-Desktopanwendung mit der Facebook API erweitern, um z.B. einen Eintrag auf der eigenen Pinnwand zu veröffentlichen? Die Antwort darauf wird in diesem Blogeintrag gegeben!

Verwendet wird dabei das „Facebook C# SDK V5.0“, welches auf http://facebooksdk.codeplex.com/ kostenlos zur Verfügung steht. Bevor es aber losgehen kann, muss man eine Anwendung bei Facebook registrieren. Dies funktioniert auf folgendem Formular: http://www.facebook.com/developers/createapp.php. Eine Anmeldung ist nur mit einem bestätigten Facebook-Account möglich. Dazu muss man seine Handynummer oder Kreditkarte angeben. Anschließend erhält man die, für die Entwicklung benötigte „Anwendungs-ID“. Damit ist es aber noch nicht genug, denn um auf die Pinnwand eines Benutzers schreiben zu können, muss er dies explizit erlauben. Diese Erlaubnis ist in einem so genannten „Access-Token“ verkörpert. Um das Access-Token zu erhalten, muss der Nutzer in der Anwendung erst auf eine Facebook-Webseite geleitet werden, auf der er die Nutzung seines Accounts mit der App freigibt. Dies lässt sich mit einem eingebetteten Webbrowser in der Oberfläche bewerkstelligt. Die URL setzt sich wie folgt zusammen:

string u = "https://graph.facebook.com/oauth/authorize?";

//Anwendungs-ID
u = u + "client_id=XXXXXXXXXXXXXXXXXXX";

//Berechtigung
u = u + "&scope=publish_stream";

//URL, die nach Aufruf angezeigt wird
u = u + "&redirect_uri=http://www.facebook.com/connect/login_success.html";

//Login-Typ
u = u + "&type=user_agent";
u = u + "&display=popup";

Quelle: http://frank-it-beratung.com/2011/01/29/tutorial-ein-facebook-pinnwandeintrag-mit-visual-basic-oder-c-teil-2/

Nachdem der Nutzer seine Eingaben gemacht hat, wird er von Facebook weitergeleitet. Anhand der Weiterleitungs-Url lässt sich der Erfolg erkennen. Enthält die URL den Parameter „access_token“, war dies erfolgreich. Mithilfe eines NavigationEvents lässt sich so das Access-Token bestimmen und zwischenspeichern:

void webBrowser1_Navigated(object sender, System.Windows.Navigation.NavigationEventArgs e)
{
  //der Access-Token hängt an der URL
  string q = e.Uri.ToString();
  string txtAccessToken;

  //jetzt auslesen
  if (q.Contains("#access_token="))
  {
    q = q.Substring(q.IndexOf("access_token=") + 13);
    txtAccessToken = q.Substring(0, q.IndexOf("&"));
    hauptFenster.Fb.tmpAccessToken = txtAccessToken;
    this.Close();
  }
}

Nachdem das „Access-Token“ beschafft wurde, kann mit der Verwendung des Facebook C# SDK  begonnen werden. Hierzu erstellt man sich erst einen neuen FacebookClient, in dem das AccessToken gesetzt werden muss.

Facebook.FacebookClient client = new FacebookClient(tmpAccessToken);

client.AccessToken = tmpAccessToken; //Access-Token setzen

Nun kann man darüber Befehle absetzen. In unserem Fall das Posten auf die eigene Pinnwand.


Für einen Post auf die Pinnwand können verschiedene Parameter in einem „System.Dynamic.ExpandoObject“ gesetzt werden. Darunter fallen z.B. der Text des Posts, eine Url zu einem Bild, Titel, externer Link,… Alle möglichen Parameter finden sich hier: http://developers.facebook.com/docs/reference/api/post/. Anschließend wir das Ganze an die eigene Pinnwand (entspricht https://graph.facebook.com/me/feed) gesendet. Im Folgenden ist ein Beispiel für einen Spritrechner gegeben:

dynamic par = new System.Dynamic.ExpandoObject();

par.message = message;
par.picture = "http://dummyimage.com/600x300/3B5998/fff.jpg&text=" + averageConsuption + " l/100km";
par.name = "Durchschnittsverbrauch";
par.link = "http://www.XXXXXXXXXXXXXXXXXXXXXXXXXXXXX.com“;
par.description = averageConsuption + " l/100km";

par.privacy = new
{
  value = "ALL_FRIENDS",
};

client.PostAsync("https://graph.facebook.com/me/feed", par);

Und so sieht das Ergebnis auf Facebook aus:

Oberfläche FaceSprit

Viel Spaß beim Experimentieren mit der API!

Advertisements

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s

Kategorien

%d Bloggern gefällt das: