Archives de Tag: Skydrive

Accéder à ses fichiers de partout avec Skydrive

Skydrive est l’espace de stockage en ligne fourni par Microsoft et accessible depuis Android, iOS, Windows Phone, Internet et maintenant depuis son PC. Donc depuis toute plateforme partout dans le monde.
Cela devient un concurrent sérieux à DropBox et autres services de stockage en ligne ainsi qu’un remplaçant du service méconnu Live Mesh.

J’avais écris un article il y a peu pour accéder à ses fichiers hébergés sur Skydrive depuis son PC. C’était un “bricolage” grâce aux lecteurs réseaux. Mais maintenant, une application a été fournie par Microsoft proposant une haute intégration au sein de l’explorateur.
Vous trouverez l’application ici : https://apps.live.com/skydrive.
L’installation se fait simplement, et vous retrouverez votre dossier Skydrive sur votre disque dur. Tous les fichiers dans ce dossier seront synchronisés avec l’espace en ligne et les autres périphériques possédant l’application.

Bon à savoir, pour les personnes déjà habituées à Skydrive vous pouvez accéder gratuitement à un hébergement de 25Go (au lieu des 7Go par défaut) en vous rendant à la page : https://skydrive.live.com et en cliquant sur “Free upgrade!”

image

Par JC VASSELON

[WP7] Utiliser Skydrive dans vos projets WP7

Dernièrement, Microsoft a annoncé la sortie du Live SDK. Cette boite à outil va nous permettre à nous développeur de faire interagir nos applications avec les services du Live. Cela va de l’authentification à nos services, en passant par WLM, l’accès aux calendriers et contacts mais aussi au SkyDrive !
SkyDrive, cet espace de stockage dans le cloud que j’avais évoqué dans cet article : https://onefor4.wordpress.com/2011/10/25/tip-intgrez-skydrive-windows-7/ va ainsi devenir encore plus intégré et nous permettre de faciliter les échanges inter-utilisateurs, inter-applications et inter-plateformes !
Nous allons voir ici quelques opérations basiques pour démarrer.

Prérequis et ressources :

Inscription de l’application

Avant toute chose, il va falloir inscrire votre application ici : https://manage.dev.live.com/AddApplication.aspx pour obtenir un identifiant et des credentials.

image

Rendez vous ensuite dans API Settings pour configurer votre application comme étant une application mobile.

image

Lire et écrire sur SkyDrive

Pour l’exemple, nous allons réaliser l’application suivante qui consiste à ajouter un nouveau fichier dans un dossier de SkyDrive.

image

C’est une simple page, contenant :

  • Un SignInButton que nous détaillerons plus tard et qui permet de s’authentifier sur le live.
  • Un ListPicker (que vous trouverez notamment dans le Silverlight for WP7 Toolkit) qui nous permettra de choisir dans quel dossier enregistrer notre fichier.
  • Une textbox pour donner un nom au fichier et une autre pour ajouter du contenu à ce fichier.

Le code

Pour utiliser SkyDrive, on aura besoin de s’authentifier sur le Live. Le SDK nous donne heureusement un contrôle déjà existant pour cela : le SignInButton ! Sourire
Ajoutez les DLL Microsoft.Live et Microsoft.Live.Controls à votre projet.

Rajoutez le namespace suivant dans votre xaml :

xmlns:my="clr-namespace:Microsoft.Live.Controls;
assembly=Microsoft.Live.Controls"

Vous pouvez maintenant utiliser le SignInButton qui vous permettra de vous authentifier sur le live et de choisir les différents droits que vous souhaitez que l’utilisateur vous donne.

<my:SignInButton 
ClientId="" 
Scopes="wl.signin wl.skydrive wl.skydrive_update" 
SessionChanged="SignInButton_SessionChanged" />

Les différents attributs importants :

  • ClientId : C’est l’identifiant de votre application. Vous le retrouverez sur cette page : https://manage.dev.live.com/Applications/Index
  • Scopes : C’est les différents droits que vous souhaitez obtenir. Ici, l’authentification, les droits de lecture sur le SkyDrive, et les droits de mises à jour sur le SkyDrive.
    Tous les scopes ici : http://msdn.microsoft.com/fr-fr/library/hh243646.aspx
  • SessionChanged : C’est l’évènement qui est levé lors de la Connexion / Déconnexion de l’utilisateur

En cliquant sur ce nouveau bouton, on est automatiquement redirigé vers la page de connexion de Windows Live.

image

Vient ensuite une demande d’autorisations :

image

La session est initialisée. Traitons là maintenant et voyons comment accéder aux différents dossiers sur notre SkyDrive. Pour cela, nous allons d’ailleurs créer une classe SkydriveItem qui nous permettra d’organiser plus facilement les différents éléments (fichiers, dossiers, albums).

public class SkydriveItem
    {
        public string Id { get; set; }
        public string Type { get; set; }
        public string Name { get; set; }

        public override string ToString()
        {
            return Name;
        }
    }
  • Id : Unique, il nous permet d’accéder directement à l’élément depuis le code.
  • Type : Il existe trois types d’éléments. Folder, un répertoire; Files, un fichier; Albums, un répertoire “spécial”.
  • Name : Le nom du dossier lisible par un humain Sourire

Revenons au code de notre page. On va ajouter un LiveConnectClient qui nous permettra de garder la session et de réaliser nos différentes opérations ainsi qu’une ObservableCollection de SkydriveItem dans laquelle on ajoutera les différents dossiers et que l’on bindera sur l’ItemsSource de notre ListPicker.

private LiveConnectClient _client;
public ObservableCollection<SkydriveItem> SkydriveItems 
{ get; set; }
        
// Constructor
public MainPage()
{
   SkydriveItems = new ObservableCollection<SkydriveItem>();
   InitializeComponent();
}

Remplissons ensuite la méthode SignInButton_SessionChanged().

private void SignInButton_SessionChanged(object sender, 
                     LiveConnectSessionChangedEventArgs e)
{
//Si on est bien connecté
if (e.Status == LiveConnectSessionStatus.Connected)
{
  //On purge la liste d'éléments
  SkydriveItems.Clear();
  //On initialise notre LiveConnectClient avec la session courante
  _client = new LiveConnectClient(e.Session);
  //On s'abonne à l'événement
  _client.GetCompleted += 
       new EventHandler<LiveOperationCompletedEventArgs>
                                       (OnGetCompleted);
 //On lance l'opération aynchrone
  _client.GetAsync("/me/skydrive/files");
 }
 else if (e.Status == LiveConnectSessionStatus.NotConnected)
 {
   SkydriveItems.Clear();
   _client = null;
 }
 else
   _client = null;
 }

Et on parcourt ensuite la liste des éléments obtenus en ajoutant ceux qui nous intéressent à notre ObservableCollection.

void OnGetCompleted(object sender, 
                LiveOperationCompletedEventArgs e)
{
  if (e.Error == null)
  {
    List<object> data = (List<object>)e.Result["data"];
    foreach (IDictionary<string, object> content in data)
    {
      SkydriveItem nItem = new SkydriveItem();
      nItem.Id = (string)content["id"];
      nItem.Name = (string)content["name"];
      nItem.Type = (string)content["type"];
      if(nItem.Type == "folder")
        SkydriveItems.Add(nItem);
     }
  }
}

Ils apparaissent maintenant dans notre ListPicker après l’authentification.

image

Occupons-nous de l’écriture dans un des dossiers sélectionnés. Abonnons l’évènement Click de notre bouton sur une méthode Save_Click.
Pour cet exemple, j’ai appelé la textbox qui représente le titre du fichier : Tb_Title et celle représentant le contenu : Tb_Text.

Voici le code de la méthode Save_Click() ainsi que le callback une fois l’upload terminé.

private void Save_Click(object sender, RoutedEventArgs e)
{
    string fileName = Tb_Title.Text.Trim();
    byte[] byteArray = 
Encoding.Unicode.GetBytes(Tb_Text.Text.Trim());
    MemoryStream fileStream = new MemoryStream(byteArray);
    _client.UploadCompleted += new 
EventHandler<LiveOperationCompletedEventArgs>(
UploadCompleted); 
    _client.UploadAsync(
((SkydriveItem)LP_Items.SelectedItem).Id, fileName, 
fileStream);
}

void UploadCompleted(object sender, 
LiveOperationCompletedEventArgs e)
{
    if (e.Error == null)
    {
        Dispatcher.BeginInvoke(() =>
        {
            MessageBox.Show("Uploadé !");
        });
    }
}

La méthode « _client.UploadAsync(
((SkydriveItem)LP_Items.SelectedItem).Id, fileName,
fileStream); « 
nous permet d’uploader notre fichier dans le dossier correspondant. Mais attention, nous ne pouvons pas passer directement le nom du dossier mais son Id !

Une fois l’upload terminé, vous retrouverez votre fichier dans le dossier voulu sur votre SkyDrive : http://skydrive.live.com/

Conclusion

Nous avons ici découvert une partie du Live SDK : comment s’authentifier et comment utiliser des opérations basiques sur SkyDrive.
Ce SDK ouvre de formidables opportunités pour interagir avec les fichiers de vos utilisateurs mais aussi faciliter la migration de vos applications.
En effet, pourquoi ne pas sauvegarder le contenu de votre Isolated Storage pour le récupérer ensuite quand l’utilisateur souhaite changer de téléphone ? Ou simplement partager ses données avec un autre ?

Par JC VASSELON

[TIP] Intégrez Skydrive à Windows 7

Edit : Microsoft propose maintenant une application pour faciliter l’intégration au sein de Windows, vous trouverez plus d’information sur ce nouvel article : https://onefor4.wordpress.com/2012/05/05/accder-ses-fichiers-de-partout-avec-skydrive/

Qu’est ce que Skydrive ?

Skydrive (anciennement nommé Windows Live Spaces) est un dossier permettant d’héberger des fichiers en ligne. Vous pouvez choisir si vous souhaitez les partager avec d’autres personnes ou les garder confidentiels.

Skydrive va certainement devenir plus connu avec Windows Phone 7. En effet, vous pouvez publier vos photos sur cette plateforme, accéder aux photos de vos amis et héberger vos documents Office.
Office vous permet d’ailleurs de travailler sur vos documents hébergés sur votre Skydrive depuis votre mobile, depuis internet grâce aux WebApps et depuis la suite installée sur votre PC.

C’est un outil intéressant pour le travail collaboratif et nous allons voir comment accéder directement à cet espace de stockage depuis le poste de travail.

Comment y accéder depuis l’explorateur ?

Tout d’abord installez cet outil qui nous permettra de récupérer certaines informations de connexion :
http://skydrivesimpleviewer.codeplex.com/releases/view/39728

Une fois démarré nous arrivons sur cette fenêtre :

image

Entrez simplement votre compte live et cliquez sur “Login to my SkyDrive”. Après une petite recherche, une liste de dossiers apparait sous le menu de connexion. Ce sont ces dossiers que nous allons afficher depuis votre poste de travail. Je vous conseille donc de tout rassembler en un seul pour plus de facilités.
Dans mon cas, je clique sur “My Documents”

image

Dans le champ de texte ayant pour intitulé “This is your WebDav address for…” copier l’adresse du type :
https://abcdefg.docs.live.net/123456789abcdefgh/^.Documents

Maintenant ouvrez l’explorateur, faites clic droit sur votre icône “Network” et cliquez sur “Map network drive…”. Comme vu précédemment le dossier de Skydrive apparaitra dans le poste de travail vous devez donc choisir une lettre de lecteur.
Puis collez l’url (celle que vous avez copié à l’étape au dessus) dans le champ folder. Modifiez la de manière à ce qu’elle ressemble à ça : \\abcdefg.docs.live.net\123456789abcdefgh\^.Documents et validez

image

Voilà, votre répertoire est ajouté au poste de travail. Vous pouvez ainsi accéder directement depuis votre explorateur à vos fichiers hébergés en ligne !
Le nom n’est pas forcément explicite, vous pouvez bien sûr le renommer Sourire

Par JC VASSELON

Edit : Microsoft propose maintenant une application pour faciliter l’intégration au sein de Windows, vous trouverez plus d’information sur ce nouvel article : https://onefor4.wordpress.com/2012/05/05/accder-ses-fichiers-de-partout-avec-skydrive/