Daily-Hour 5: First Facebook Application – Login/Authentifizierung & API Request
Im Post “Daily-Hour 4: First Facebook Applikation – Vorbereitung und Grundlagen” haben wir die ersten Schritte für die Erstellung von einer Facebook Silverlight Applikation gemacht und setzen gleich an diesen Punkt an. Da ich mich mit dem Developer Kit auch erst vertraut machen muss, hat es etwas länger gedauert und bei der Daily-Hour ist eigentlich geplant nur eine Stunde beim jeweiligen Projekt zu sitzen und gegebenfalls in der nächsten Daily Hour fortsetzen.
Anschließend können wir das FDT BrowserSession Objekt instanzieren und den User authentifizieren.
- Im Behind-Code der Silverlightapplikation Mainpage werden einige private Members benötigt:
private Api _FacebookAPI; // dafür wird Facebook.Rest benötigt
private readonly BrowserSession _browserSession; // dafür wird Facebook.Session benötigt
private const string ApplicationKey = “Your_Application_Key”; - im Konstruktor muss noch folgender Code hinzugefügt werden:
_browserSession = new BrowserSession(ApplikationKey);
-browserSession = LoginCompleted += browserSession_LoginCompleted; - Im XAML-File muss man ein Login Button mit einem Click-Event Handler erstellt werden, der schließlich noch
_browserSession.Login();
enthält. - Im Konstruktor wurde der Event Handler browserSession_LoginCompleted(object sender, EventArgs e) referenziert, doch bisher fehlt noch die Implementierung.
private void browserSession_LoginCompleted(object sender, EventArgs e)
{
_facebookAPI = new Api(_browserSession);
}
Mit diesem Code wird die komplette Userauthentifizierung behandelt. Sobald das _facebookAPI Objekt zugewiesen ist, dann hat die Applikation alles notwendige auf die Facebook Daten zugreifen und integrieren kann.
Synchrone/Asynchrone API AnfrageBei einer Silverlight Applikation ist es erforderlich das alle Serviceanfragen auf ansynchrone Weise geschieht und deshalb diesen Silverlight Standard bietet das Facebook Developer Toolkit’s Silverlight Version nur eine asynchrone REST API Methode.
Wir werden nun eine asynchrone Anfrage an Facebook senden und das Resultat in einem Usercontrol ausgeben.
Dafür benötigen wir einen Anfrage-Button (Get Status):
<Button Content=”Get Status” Width=”100″ Height=”50″ Click=”GetStatusButton_Click”></Button>
Und den dazugehörigen Code im Event-Handler:
private void GetStatusButton_Click(object sender, RoutedEventArgs e)
{
_facebookAPI.Status.GetAsync(new Status.GetCallback(GetStatusCompleted), null);
}
private void GetStatusCompleted(IList<user_status> status, Object state, FacebookException e)
{
if (e == null)
{
// Marshall back to UI thread
Dispatcher.BeginInvoke(() => StatusList.ItemsSource = status);
}
}
Der einfachheit halber habe ich mich bei diesem Beispiel noch an den Schritten von The Facebook Developer Toolkit and Silverlight orientiert und mich bei auftretenden Problemen und Unklarheiten bei einigen anderen Seiten versucht Rat zu holen.
Bei mir hat die Applikation noch nicht funktioniert, da diese mir eine Fehlermeldung auswirft, welche ich nicht beheben konnte. Die Fehlermeldung weißt auf die Facebook.Silverlight.dll hin. Eine ähnliche Fehlermeldung erhalte ich aber auch, wenn ich das Demobeispiel der Codeplex Seite downloade. Auch die Videos der Seite konnten mir nicht viel weiterhelfen.




