Il y a quelques mois, j'ai expliqué comment vous pouvez profiter de l'authentification unique et de SkyDrive dans vos applications Windows 8, grâce au SDK Live. Depuis, nous avons mis Windows 8 Release Preview à la disposition du public, et nous avons constaté l'émergence d'incohérences dans les choix de conception déterminant comment les applications exposent des points d'entrée permettant aux utilisateurs d'ouvrir une session, de se connecter à leurs comptes ou de se déconnecter.

Pour vous guider à travers ces choix de conception, nous avons regroupé quelques recommandations destinées à être mises en œuvre dans les applications cherchant à utiliser le compte Microsoft d'un utilisateur. Dans ce billet, je vais aborder quelques-unes de ces recommandations et je vais présenter quelques exemples de code pour vous aider à vous lancer !

Votre application peut avoir besoin d'exploiter la fonction d'authentification auprès des comptes Microsoft dans trois cas principaux :

  1. Lorsque l'utilisateur est obligé de se connecter à un compte pour que l'application fonctionne.
  2. Lorsque votre application offre une expérience personnalisée aux utilisateurs connectée, même si elle fonctionne aussi sans connexion.
  3. Lorsque votre application comporte des tâches spécifiques nécessitant une connexion à un compte Microsoft (intégration avec SkyDrive ou Hotmail, par exemple).

Penchons-nous plus en détail sur ces trois cas.

Recommandations relatives aux applications nécessitant la connexion de l'utilisateur

Si votre application utilise un compte Microsoft comme fournisseur d'identité et qu'elle ne fonctionne pas tant que l'utilisateur n'est pas connecté, affichez la boîte de dialogue de connexion au compte Microsoft dès le démarrage de l'application. Les applications qui créent ou gèrent des informations propres à chaque utilisateur, par exemple l'application Contacts, entrent dans cette catégorie.

Si l'utilisateur n'a pas ouvert de session sur son PC à l'aide d'un compte Microsoft, l'application affiche une boîte de dialogue standard de connexion.

Boîte de dialogue de connexion standardBoîte de dialogue de connexion

Si l'utilisateur a déjà ouvert une session sur son PC à l'aide d'un compte Microsoft, cette boîte de dialogue ne s'affiche pas, car Windows 8 prend en charge l'authentification unique.

Dans tous les cas, pour que votre application puisse accéder à l'identité de l'utilisateur, celui-ci doit autoriser votre application à accéder à ses informations. L'octroi d'autorisation n'est effectué qu'une seule fois : Windows garde en mémoire l'autorisation lors des exécutions suivantes de l'application, quel que soit l'appareil utilisé et y compris sur votre site Web.

Boîte de dialogue d'autorisation
Boîte de dialogue d'autorisation

Pour afficher ces boîtes de dialogue, appelez la méthode WL.login (pour JavaScript) ou Microsoft.Live.LiveAuthClient.Login (pour les langages managés tels que C#) au démarrage de l'application.

JavaScript

WL.Event.subscribe("auth.login", onLoginComplete);

WL.init();

WL.login({

scope: ["wl.signin", "wl.skydrive"],

});

C#

public LiveConnectSession Session
{
get
{
return _session;
}
set
{
_session = value;
}
}

private async void InitAuth()
{
if (!Windows.ApplicationModel.DesignMode.DesignModeEnabled)
{
authClient = new LiveAuthClient();
LiveLoginResult authResult = await authClient.LoginAsync(new List<string>() { "wl.signin", "wl.basic", "wl.skydrive" });

if (authResult.Status == LiveConnectSessionStatus.Connected)
{
this.Session = authResult.Session;
}

}
}

Pour plus d'informations sur la connexion des utilisateurs par le biais du SDK Live, voir Connexion des utilisateurs.

Recommandations relatives aux applications qui fonctionnent correctement sans connexion, mais qui offrent une expérience plus personnalisée aux utilisateurs connectés

Certaines applications, par exemple les applications d'actualités ou de météo, peuvent fonctionner correctement même si l'utilisateur n'est pas connecté, mais offrir une expérience personnalisée une fois celui-ci connecté. Dans ce cas, nous vous recommandons de suivre les conseils figurant dans cette section. Votre application doit prendre en charge l'icône Paramètres et comporter une section Comptes offrant une option de connexion. Cette capture d'écran montre comment ce principe est mis en œuvre dans l'application Contacts.

Application Contacts affichant la section Comptes, dans le volet des paramètres
Application Contacts affichant la section Comptes, dans le volet des paramètres

Nous vous recommandons d'offrir à l'utilisateur la possibilité de cliquer sur l'icône Paramètres, puis sur Comptes. L'option de connexion au compte Microsoft doit alors s'afficher.

Pour afficher cette option, utilisez la propriété Label de la classe SettingsCommand. Une fois que l'utilisateur a cliqué dessus, utilisez la propriété Invoked pour afficher un contrôle SettingsFlyout contenant l'option de connexion au compte Microsoft. Pour en savoir plus sur le contrôle SettingsFlyout, consultez la section « Créer des menus volants de paramètres » dans l'article Recommandations sur les paramètres d'application.

Les applications qui acceptent exclusivement les connexions à un compte Microsoft peuvent simplement inclure une option de connexion dans les paramètres : elles n'ont pas besoin de section Comptes, car elles ne prennent pas en charge plusieurs comptes. Voici une capture d'écran de l'application PhotoBucket affichant une option de connexion qui figure directement dans le volet des paramètres.

photobucket

Application PhotoBucket affichant une option de connexion dans le volet des paramètres

Recommandations relatives aux applications qui réalisent des tâches spécifiques nécessitant la connexion à un compte Microsoft

Certaines applications n'ont pas besoin d'un compte Microsoft pour fonctionner, mais permettent d'effectuer des tâches qui s'intègrent aux services Microsoft tels que Hotmail, SkyDrive ou Messenger. C'est par exemple le cas des applications personnalisées de retouche photo qui disposent une commande « Enregistrer sur SkyDrive ».

Si c'est le cas de votre application, nous vous recommandons d'afficher la boîte de dialogue de connexion au compte Microsoft lorsque l'utilisateur appelle la tâche exposée dans votre application par le biais d'un élément canvas ou de la barre de l'application. Dans le cadre du gestionnaire d'événements click, vous connectez votre utilisateur, puis lorsque celui-ci est connecté, vous réalisez la tâche.

Voici quelques exemples qui montrent comment intégrer la connexion à un compte Microsoft et demander l'autorisation d'accéder au compte SkyDrive de l'utilisateur à partir d'un clic sur un bouton dans la barre de l'application.

JavaScript

function onAppBarSaveButtonClick()
{
WL.Event.subscribe("auth.login", onLoginComplete);
WL.init();

WL.login({
scope: ["wl.signin", "wl.skydrive_update"],
});
}

C#

private void AppBarSaveButton_Click(object sender, RoutedEventArgs e)
{
InitAuth();
}

private async void InitAuth()
{
if (!Windows.ApplicationModel.DesignMode.DesignModeEnabled)
{
authClient = new LiveAuthClient();
LiveLoginResult authResult = await authClient.LoginAsync(new List<string>() { "wl.signin", "wl.basic", "wl.skydrive_update" });

if (authResult.Status == LiveConnectSessionStatus.Connected)
{
// An APP level property for the session
App.Session = authResult.Session;
}

}
}

Vous pouvez personnaliser l'apparence du bouton figurant dans la barre de l'application en utilisant les ressources disponibles dans les instructions d'implémentation et de personnalisation de Live Connect.

Recommandations relatives à la déconnexion de l'utilisateur

Dans Windows 8, un utilisateur peut ouvrir une session sur son PC à l'aide de son compte Microsoft ou disposer d'un compte Microsoft lié à son compte local ou à son compte de domaine. Dans ce cas, votre application n'a pas besoin d'offrir une option de déconnexion. Néanmoins, dans certains cas, l'utilisateur n'a pas ouvert sa session sur le PC à l'aide d'un compte Microsoft et n'a pas lié de compte Microsoft à son compte local ou à son compte de domaine. Dans ce cas, si l'utilisateur est connecté à votre application par le biais d'un compte Microsoft, vous devez fournir une option de déconnexion. Pour cela, vous pouvez vérifier si la déconnexion du compte peut être effectuée, en examinant la propriété CanSignOut de la classe OnlineIdAuthenticator.

Si votre application prend en charge plusieurs comptes, placez le bouton de déconnexion dans le menu volant de la section Comptes, accessible lorsque l'utilisateur appuie ou clique sur l'icône Paramètres. Dans le cas des applications qui acceptent seulement les connexions aux comptes Microsoft, placez l'option de déconnexion directement dans ces paramètres.

photobucket2

Si la déconnexion n'est pas autorisée, affichez à la place le nom de l'utilisateur connecté. Pour en savoir plus sur le contrôle SettingsFlyout, consultez la section « Créer des menus volants de paramètres » dans l'article Recommandations sur les paramètres d'application.

Ces exemples de code vous montrent comment déconnecter l'utilisateur en suivant ces recommandations.

JavaScript

function init()
{
var onlineId = Windows.Security.Authentication.OnlineId.OnlineIdAuthenticator();

If(onlineId.canSignOut)
{
// the sign out button is disabled by default
document.getElementById("btnSignOut").style.visibility = "visible";

}
}

function onLogoutButtonClick()
{
WL.logout();
}
 
C#
LiveAuthClient liveAuthClient;
public SimpleSettingsNarrow()
{
this.InitializeComponent();
liveAuthClient = new LiveAuthClient();

Windows.Security.Authentication.OnlineId.OnlineIdAuthenticator auth = new Windows.Security.Authentication.OnlineId.OnlineIdAuthenticator();

if(auth.CanSignOut)
{
this.btnSignOut.Visibility = Windows.UI.Xaml.Visibility.Visible;
}
}

private void LogoutButton_Click(object sender, RoutedEventArgs e)
{
liveAuthClient.Logout();
}

Pour déconnecter un utilisateur, appelez la méthode WL.logout ou Microsoft.Live.LiveAuthClient.Logout.

Quelques règles générales...

Dans ce billet, je vous ai expliqué comment les applications peuvent exploiter la fonctionnalité d'authentification unique auprès des comptes Microsoft, en respectant parfaitement les attentes des utilisateurs de Windows 8 vis-à-vis des applications de style Metro proposées par Microsoft.

J'ai également décrit la méthode recommandée pour inclure une option permettant de se déconnecter de votre application. En plus de ces recommandations, j'aimerais terminer ce billet en décrivant quelques règles simples qui vous empêcheront de créer dans votre application des expériences utilisateur qui risqueraient de présenter des incohérences avec l'expérience dont bénéficient les utilisateurs au sein des applications Microsoft.

  • N'affichez pas de contrôles ou de boîtes de dialogue de connexion/déconnexion autres que ceux décrits dans ce billet. L'utilisation de la boîte de dialogue fournie par le SDK Live rassure vos utilisateurs sur le fait que votre application n'a pas directement accès aux informations d'identification de leur compte Microsoft.
  • N'affichez pas les options de connexion (ou de déconnexion) au compte Microsoft ailleurs que dans le contrôle SettingsFlyout ou que dans le cadre d'une tâche. Les utilisateurs d'applications de style Metro ont pris l'habitude de retrouver leurs options de gestion de compte dans l'icône Paramètres. En plaçant ces options ailleurs, vous générerez une expérience utilisateur incohérente et inattendue.

Pour en savoir plus sur le SDK Live, vous pouvez lire notre documentation, télécharger le SDK Live et poser des questions sur nos forums.

--Dare Obasanjo 
  Chef de projet senior, Plateforme Live Connect