Windows Phone 8 – Ajouter Facebook à son application

devCenterLogo

Windows Phone permet depuis sa mise à jour Mango (Windows Phone 7.1) de partager facilement un lien ou un message vers les différents réseaux sociaux que sont Facebook ou Twitter. Mais récemment un nouveau SDK Facebook .NET est sorti afin d’augmenter les possibilités d’intégration. Dans cet article, je vais vous montrer comment poster un statut et récupérer votre fil d’actualité au sein d’une application Windows Phone 8.

Création de l’application Facebook

Afin d’interagir avec Facebook et son API, chaque application Windows Phone doit être mise en relation avec une application Facebook pour cela, rendez-vous sur https://developers.facebook.com/  puis dans l’onglet “Apps” et créer une nouvelle application.

fb1

Modifier le Mode Bac à sable en Désactivé afin de rendre l’application Facebook accessible et choisissez le type d’intégration à Facebook “Website with Facebook Login”, penser à remplir l’URL par celle de votre site internet ou de votre application. Pour chaque action effectuée un lien avec le nom de l’application vous permettra de rediriger vers ce site. Noter la clé App ID que nous réutiliserons au sein de l’application Windows Phone.

Coté Windows Phone

Au sein de votre Visual Studio, nous allons maintenant référencer deux packages Nuget. Ces packages sont Facebook et Facebook.Client, penser à inclure les versions préliminaires afin d’obtenir Facebook.Client.

fb2

Authentification

Maintenant passons au C# afin de voir comment s’authentifier.

private async void FacebookAuthAsync()
{
  FacebookSession _session;
  FacebookClient _client;
  string _accessToken;

  try
  {
    FacebookSessionClient facebookSessionClient = new FacebookSessionClient(FacebookAppId);

    if (!string.IsNullOrWhiteSpace(SettingsManager.GetSetting("FacebookToken")))
    {

      _accessToken = SettingsManager.GetSetting("FacebookToken");
    }
    else
    {
      _session = await facebookSessionClient.LoginAsync("user_about_me,read_stream,status_update");
      _accessToken = _session.AccessToken;

      SettingsManager.SetSetting("FacebookToken", _accessToken);
    }

    _client = new FacebookClient(_accessToken);
  }
  catch (InvalidOperationException e)
  {
    string message = "Erreur d'authentification " + e.Message;

    MessageBox.Show(message);
  }
}

L’appID de l’application Facebook nous sert ici à créer un élément SessionClient spécifique à notre application. Je recherche d’abord si je possède déjà un Token Facebook stocké dans l’Isolated Storage du téléphone. Si ce n’est pas le cas je lance une demande d’authentification avec une liste de permissions.

Celles-ci sont, dans le cadre de cet article, “user_about_me” pour récupérer les informations sur l’utilisateur (nom, prénom, ville etc…), “read_stream” afin de lire son flux d’actualités et la dernière permission “status_update” afin de pouvoir ajouter un nouveau statut depuis l’application Windows Phone. Si vous voulez en savoir plus sur les différentes permissions possibles, rien de mieux que la documentation Facebook disponible ici : https://developers.facebook.com/docs/reference/api/ .

Une fois authentifié, il faut stocker le Token Facebook afin de pouvoir s’en servir pour chaque opération.

fb6

Coté utilisateur, un composant WebBrowser s’ouvrira afin qu’il rentre ses identifiants et accepte les permissions que vous demandez. A noter qu’il peut les refuser entièrement ou en partie.

Poster un statut


private void FacebookPostStatus(string status)
{
  var parameters = new Dictionary<string, object>();
  parameters["message"] = String.Format(status);

  FacebookClient _client = new FacebookClient(SettingsManager.GetSetting("FacebookToken"));
  _client.PostTaskAsync("me/feed", parameters);
}

Le FacebookClient possède 2 méthodes très importantes, “PostTaskAsync” permet d’envoyer des informations à Facebook et “GetTaskAsync” de récupérer des informations. Ici en ajoutant “me/feed” en tant que path nous souhaitons interagir sur le fil d’actualité de l’utilisateur.  Dans les paramètres nous passons le message que nous souhaitons mettre en tant que statut.

fb7

Flux d’actualité


private async void FacebookGetFeed()
{
  FacebookClient _client = new FacebookClient(SettingsManager.GetSetting("FacebookToken"));
  var flux =  await _client.GetTaskAsync("me/feed");
}

Sur le même principe que pour poster un statut, nous faisons appel au FacebookClient mais en utilisant la méthode GetTaskAsync. Celle-ci nous permet de retrouver les 25 dernières actions de l’utilisateur (statut, like, message dans un groupe etc…)

fb8

Conclusion

Nous avons pu voir comment poster facilement un statut et récupérer le flux d’actualité de l’utilisateur. Avec les bonnes permissions et les méthodes GetTaskAsync et PostTaskAsync, libre à vous d’intégrer toutes les fonctionnalités de Facebook que vous désirez au sein de votre application !

Nombre de vue : 62

COMMENTAIRES 4 commentaires

  1. […] Pour voir l’intégralité, c’est ici : Blog Soat […]

  2. Cyril Pch dit :

    Très bon article.
    Très utile pour débuter l’implémentation de fonctions sociales à une appli Win 8!

  3. Sympa l’astuce. Au final, tu l’utilises pour quoi cette astuce. Ça revient un peu à réinventer la roue. On ne va pas refaire une application Facebook.
    L’utilisation avec d’autres est limité, il faudrait que chacun créé une application pour pouvoir accéder au graph.

  4. thierry verdier dit :

    Bonjour
    Comment faire pour récupérer les posts d’un autre utilisateur ? juste changer me par le nom du user ?

AJOUTER UN COMMENTAIRE