[SPC14] SPC332 // Overview of Yammer app development

Mardi 04/03/2014 à 9h00

Speaker
Brian Lyttle – Support Escalation Engineer @ Microsoft

// Résumé
Session avec pas mal de potentiel sur l’intégration de Yammer dans ses applications avec OpenGraph notamment.
Le pauvre speaker semble malade et un peu marqué ce qui n’aide pas à bien comprendre la session (vous étonnez pas si je passe du coq à l’âne dans mes notes, j’ai dû sauter des passages).
Les APIs peuvent être utilisées de plusieurs manières différentes (embed ou js custom/api REST).
Les démos ne sont pas transcendantes mais le message est passé comme quoi on peut créer des apps qui utilisent Yammer comme service social.
On peut noter un SDK .NET à venir pour Yammer.
Cela reste un overview, j’aurais aimé rentrer dans un cas plus concret, plus en détails.
// Yammer platform
Il y a les feeds et les APIs REST.
Il explique que les feeds, les conversations se font autour d’objets (dans Dynamics ou dans Office 365).
On parle de suivre

// Activity stream posts
Les posts se décomposent en 3. L’acteur, l’action et l’objet sur lequel se fait le post.
Ex : Sacks —> update —> objet

// Yammer internals
Les networks sont des conteneurs des users et des groupes.
Un network « interne » ou home network, est associé à un ou plusieurs noms de domaines.
Les networks « externes » ou external networks sont indépendants du nom de domaine.
Dans Yammer, il y a le concept de « Guest Collaboration » permettant à un réseau d’inviter des personnes externes au réseau (voire qui ne sont pas sur Yammer visiblement).
Avec l’autre concept de « External Network Collaboration », on permet à un externe d’accéder à un network interne.

// Users
Les utilisateurs appartiennent toujours à un réseau de base « Home network ».
Il peut avoir 4 statuts : Pending, Active, Suspended, Deleted.
Ils peuvent parfois donc venir d’un réseau externe.
Les invités (guests) ont un accès direct à un réseau.

// External network
Les réseaux externes ne sont pas des accueils pour les applications ou les users.
Il y a un jeu avec des jetons (tokens) en OAuth pour l’authentification.

// Yammer security model
Que ce soit Freemium ou Enterprise, il y a les users, les admin, et les verified admin avec des niveaux de permissions d’accès différents à chaque niveau. Le verified admin est vraiment l’administrateur ultime qui a tous le adroits.

// Open Graph
Pour rappel, c’est ce qui permet de considérer une page comme étant un objet avec des propriétés comme l’URL, une photo, un abstrait etc.
C’est ce qui permet sur les outils de réseaux sociaux de mettre l’URL de la page dans un outil qui détecte les informations et crée une vignette pour celle-ci.

// Yammer APIs
Il y a la partie embed avec de l’authentification simple.
Puis l’API REST ainsi que le modèle objet Javascript (Javascript API) qui nécessite de créer des enregistrements d’applications chez Yammer et d’implémenter les autorisations dans son application.

// DEMO de la plate-forme
Il montre une page d’un site quelconque avec une galerie photos affichée.
Il va sur une autre page où il récupère les informations de son profil (nom, photo, email).
Il se déconnecte et voit qu’il a implémenté une authentification OAuth avec Yammer.
Il va sur Yammer, dans ses applications, il voit la liste des applications qu’il a autorisées. Il révoque l’accès à son appli et essaye sur son appli de se relogger. On voit alors qu’on lui demande une autorisation.
Sur son appli (en ASP.NET MVC) il upload une photo. On voit que sur l’affichage de la photo, il a implémenté un Yammer feed qui s’est attaché à l’objet correspondant à sa photo.
Retour sur le site Yammer, où il voit dans ses feeds qu’il a effectivement posté une photo.
Ça pour dire qu’il a pu en fait attacher un feed sur un objet OpenGraph.

// DEMO Visual Studio
Il a un projet Visual Studio avec un projet où une classe héritant de OAuth2Client. Il a implémenté les méthode nécessaire en renseignant les endpoint, clientID, les URLs de redirections, les objets client secret qu’il doit récupérer quand il enregistre son application.
Il doit aussi implémenté le GetUserData où il implémente la méthode de récupération de l’utilisateur courant avec ses informations de profils.
Ensuite il montre qu’il a toute une panoplie de classe qu’il peut utiliser pour récupérer les streams de son activité sur Yammer etc.

// Embed API
Il explique qu’il peut juste insérer le script Javascript stocké sur Yammer pour l’utiliser sur le page avec une méthode assez simple pour gérer la connexion.
Ensuite pour l’exemple, une méthode permet de récupèrer un feed de son choix afin de l’insérer dans une div identifiée par son ID.

// DEMO : Enregistrement d’une application
Pour une application à enregistrer donnée, on peut configurer des actions, des types de contenus.
Ceux-ci définissent des termes qui sont utilisés sur Yammer pour écrire dans le feed (typiquement Mike a posté une photo). Le verbe « a posté » est défini comme une action avec un identifiant. Et le terme « une photo » est défini comme un type de contenu avec également un identifiant.
Yammer peut générer un intitulé dans le feed qui correspond à vos actions d’applications.

// Enregistrer une App
Une app sur Yammer peut être enregistrée par tous les utilisateurs d’un réseau. Il est enregistré et lié à un home network puis publié dans l’annuaire des apps.
Il est important de renseigner le redirect URI qui correspond à l’URL vers laquelle est redirigé l’utilisateur après authentification.

// Exécuter des requêtes
Authorization : il faut récupérer l’autorisation en récupérant un Client ID et Secret, sorte de token d’accès pour l’utilisateur.
Avec ce token, on peut générer une requête HTTP en passant le token en paramètre ce qui permet d’assurer l’authentification.
On désérialise le json pour procéder au traitement de la réponse de la requête.

// Open Graph activity stories
Les objets sont des activités qui sont décrites et qui en json, sont composées d’un actor, d’une action, d’un objet (l’app) et d’un message.

// Essentials tools
HTTP Client : HTTPClient, RestSharp
Class to JSON mappings : JSON C# class Generator, JsonPack. Ces outils ont la limite de pas excellemment gérer les paramètres optionnels parfois non présents dans les réponses des requêtes.
Debugger : Fiddler est ton ami 🙂

// Yammer .NET SDK
Un SDK .NET va arriver pour attaquer Yammer.
Gestion d’authentification, modèle objet .NET, gestion des endpoints.

// Best practices
Bien enregistrer son app avec un compte qui n’est pas désactivable facilement.
Autoriser tout le monde à autoriser l’application.
Respecter les limites annoncées.
Utiliser les endpoints qui retournent du JSON.
Autoriser le HTTP Logging.

// Archiving Yammer Content
Il est possible d’exporter son contenu Yammer, même avec le eDiscovery de SharePoint.

// Content Migration
Les messages ne peuvent pas être antidatés.
Les produits ne sont pas désignés de la même façon. L’implémentation n’est pas magique.
Le contenu Yammer peut être éphémère, contrairement aux outils qui sont fait pour durer dans le temps.

// Sample
http://www.sched.do / https://github.com/yammer/shed.do
C’est une appli d’événements type Doodle où on peut inviter des gens de Yammer dans la sélection d’invités.

// Resources
Yammer developer network : http://yammer.com/yammerdevelopersnetwork
Yammer Developers Home : https://developer.yammer.com
Data export API : http://success.yammer.com/integrations/data-export

Christian

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s