Viele Windows Phone Apps ermöglichen das Arbeiten mit Dokumenten oder Daten die sinnvollerweise mit anderen Anwendungen geteilt werden. Vielfach kommt dabei Dropbox zum Einsatz und weit seltener SkyDrive. Dabei ist eine Integration mittlerweile recht einfach möglich. Dieser Beitrag zeigt was dafür notwendig ist und wie es funktioniert.

Im ersten Schritt wird das Live SDK benötigt. Darin enthalten sind Steuerelemente und Schnittstellen für den Zugriff auf SkyDrive via Single Sign On durch den Microsoft Account (vormals Windows Live ID). Nach der Installation sind zwei Referenzen einzubinden:

Windows

Wer gerne über die Toolbox arbeitet kann sich die Steuerelemente via Choose Items einbinden:

Visual Studio Toolbox Items hinzufügen

Hier ist dann (je nach zu Grunde liegender Version) der SignInButton zu wählen. Nach Bestätigung erscheint das Steuerelement in der Toolbox und kann dort praktisch ausgewählt und auf die View gezogen werden:

SignInButton in Visual Studio Toolbox hinzufügen

Berechtigungen

Für den Zugriff auf SkyDrive sind unterschiedliche Berechtigungen notwendig. Hierbei sind insgesamt 5 Scopes definiert, die jeweils mit einer unterschiedlichen Berechtigung ausgestattet sind:

  • wl.sigin: Single Sign On, d.h. ist der Benutzer bereits angemeldet, wird diese Session übernommen
  • wl.basic: Lesezugriff auf die grundlegenden Profilinformationen und der Liste der Kontakte
  • wl.offline_access: Benutzerprofil kann zu jeder Zeit gelesen und aktualisiert werden. Ist dieser Scope nicht aktiviert kann auf die Profilinformationen nur in eingeloggtem Zustand zugegriffen werden.
  • wl.skydrive: Lesezugriff auf Dateien
  • wl.skydrive_update: Lese- und Schreibzugriff auf Dateien

Alle verfügbaren Scopes können hier eingesehen werden. Die gewünschten Scopes sind bei Verwendung des SignInButton-Steuerelementes über die Eigenschaft Scopes anzugeben:

<Controls:SignInButton Scopes="wl.basic wl.signin wl.offline_access wl.skydrive_update"/>

Damit der Zugriff grundsätzlich funktioniert, muss im Live Connect Developer Center eine Anwendung erstellt werden. Daraus resultiert eine ClientId, die in der gleichnamigen Eigenschaft zu setzen ist.

Es ist zu beachten, dass für den Zugriff mittels Windows Phone in den API-Einstellungen zur Anwendung im Developer Center diese als mobile Anwendung deklariert werden muss.

So sollte die Deklaration der Schaltfläche schlussendlich aussehen:

<Controls:SignInButton Scopes="wl.basic wl.signin wl.offline_access wl.skydrive_update" SessionChanged="OnSkyDriveSessionChanged" ClientId="[ClientId]" Branding="Skydrive" TextType="SignIn"/>

Es gibt weitere Eigenschaften, die gesetzt werden sollten:

  • Branding: Das Icon und das Theme welches für die Schaltfläche gesetzt werden sollen. Im obigen Beispiel ist dies auf Skydrive gesetzt. Weitere Möglichkeiten sind Hotmail, Messenger und Windows.
  • TextType: Hierfür stehen unterschiedliche Varianten des anzuzeigenden Textes zur Verfügung. Eine Übersicht wird hier gegeben.

Verbindung aufbauen

Um eine Verbindung aufzubauen ist lediglich auf die angezeigte Schaltfläche zu klicken. Wie bei der obigen Deklaration zu sehen ist, ist ein Ereignishandler auf das Ereignis SessionChanged zu setzen. Dieses Ereignis wird ausgelöst, wenn es dahingehend eine Änderung gibt.

<if (e != null && e.Status == LiveConnectSessionStatus.Connected)
{
    ViewModel.ConnectClient(e.Session);
}
else
{
    ViewModel.DisconnectClient();
    if (e.Error != null)
    {
        // Error handling
    }

Hier wird auf ein ViewModel verwiesen, welches in meiner Anwendung verwendet wird. Dieses stellt eine Methode ConnectClient zur Verfügung. Darin wird unter anderem folgendes vorgenommen um den Client zu initialisieren:

private LiveConnectClient skydriveClient = null;

public void ConnectClient(LiveConnectSession session)
{
    this.skydriveClient = new LiveConnectClient(session);
}

Ab nun können weitere Operationen ausgeführt werden. Eine genaue Beschreibung hinsichtlich Ordner und Dateien findet sich im Beitrag Working with Microsoft SkyDrive folders and files.

Hinweis: Sehr hilfreich ist das interaktive Live SDK. Darüber kann die API ohne echtes Setup kennengelernt werden.

Fazit

Mit Hilfe des Live SDK kann sehr einfach eine Verbindung zu SkyDrive aufgenommen werden. Die Verwendung selbst ist einfach, allerdings mit einigen kleinen Gemeinheiten deren Lösung an unterschiedlichsten Stellen allerdings gefunden wird.

Über den Autor

Norbert Eder

Ich bin ein leidenschaftlicher Softwareentwickler und Fotograf. Mein Wissen und meine Gedanken teile ich nicht nur hier im Blog, sondern auch in Fachartikeln und Büchern.