Há alguns meses escrevi sobre como aplicar o logon único e o SkyDrive aos seus aplicativos Windows 8 com o Live SDK. Desde então, disponibilizamos o Windows 8 Release Preview publicamente e começamos e encontrar algumas inconsistências nos padrões de design formados em como os aplicativos expõem pontos para usuários entrarem, conectarem contas ou saírem da experiência.

Para ajudá-lo com esses padrões de design, criamos algumas diretrizes para aplicativos que querem usar uma conta da Microsoft do usuário. Nesta postagem, compartilho essas diretrizes com você e mostro alguns códigos para começar.

Existem alguns cenários principais em que seu aplicativo pode precisar integrar a autenticação com as contas da Microsoft:

  1. Seu aplicativo exige que o usuário esteja conectado para funcionar.
  2. Seu aplicativo pode funcionar se o usuário não estiver conectado, mas fornece uma experiência personalizada para usuários conectados.
  3. Seu aplicativo tem tarefas específicas que exige que você entre em sua conta da Microsoft, como integração ao SkyDrive ou Hotmail.

Agora vamos falar mais sobre os detalhes sobre esses cenários.

Diretrizes para aplicativos que exigem a entrada de um usuário

Se o aplicativo usar uma conta da Microsoft como seu provedor de identidade e não funcionar até que o usuário entre, mostre o diálogo de entrada na conta da Microsoft imediatamente após a inicialização do aplicativo. Os aplicativos que criam ou gerenciam informações para um usuário específico, como o aplicativo Pessoas, fazem parte dessa categoria.

Se o usuário não estiver conectado ao seu PC com uma conta da Microsoft, o aplicativo exibirá um diálogo de entrada padrão.

Diálogo de entradaDiálogo de entrada.

Se o usuário já estiver conectado ao seu PC com uma conta da Microsoft, este diálogo não será exibido porque o Windows 8 oferece suporte ao logon único.

Em ambos os casos, antes do aplicativo obter acesso à identidade do usuário, ele precisa conceder permissão ao seu aplicativo para que ele possa acessar seus dados. Esse é um processo único que o Windows lembra para execuções subsequentes do seu aplicativo em qualquer dispositivo e até no seu site.

Diálogo de permissão
Diálogo de permissão.

Para exibir esses diálogos, chame o método WL.login (para JavaScript) ou o método Microsoft.Live.LiveAuthClient.Login (para idiomas gerenciados, como C#) na inicialização do aplicativo.

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;
}

}
}

Para obter mais informações sobre a entrada de usuários com o Live SDK, consulte Entrada de usuários.

Diretrizes para aplicativos que funcionam sem ser necessário entrar, mas oferecem uma experiência personalizada para usuários conectados

Alguns aplicativos, por exemplo aplicativos de notícias e clima, podem funcionar normalmente sem a entrada do usuário, mas também podem oferecer uma experiência personalizada após a entrada do usuário. Para esse cenário, recomendamos que o aplicativo siga o padrão sobre o qual falamos nesta seção. Seu aplicativo deve oferecer suporte ao botão Configurações e fornecer uma seção Contas com uma opção de entrada. Esta captura de tela mostra o padrão usado no aplicativo Pessoas.

Aplicativo Pessoas mostrando a seção Contas em Configurações
Aplicativo Pessoas mostrando a seção Contas em Configurações

Recomendamos a interação do usuário em que o usuário clica no botão Configuração e, depois, no botão Contas. Em seguida, a opção de entrada na conta da Microsoft é exibida.

Para fazer isso, use a propriedade Rótulo da classe SettingsCommand para exibir essa opção e, depois que o usuário clicar nela, use a propriedade Invocado para exibir um controle SettingsFlyout com a opção de entrada na conta da Microsoft. Para obter mais informações sobre o controle SettingsFlyout, consulte a seção “Criar menu suspenso de configurações” em Diretrizes de configurações do aplicativo.

Os aplicativos que oferecem suporte à conexão apenas com contas da Microsoft podem ter somente uma opção de Entrada nas configurações e não precisam de uma seção Contas, já que não oferecem suporte a várias contas. Veja uma captura de tela do aplicativo PhotoBucket exibida em uma opção de Entrada diretamente no painel Configurações.

photobucket

Aplicativo PhotoBucket exibido na opção Entrada de Configurações

Diretrizes para aplicativos que têm tarefas específicas que exigem a entrada na conta da Microsoft

Alguns aplicativos não precisam de uma Conta da Microsoft para funcionar, mas fornecem tarefas que são integradas aos Serviços da Microsoft, como Hotmail, SkyDrive e Messenger. Um exemplo disso é um aplicativo de edição de fotos personalizado que apresenta uma tarefa Salvar no SkyDrive.

Se esse for o caso para seu aplicativo, recomendamos a exibição do diálogo de entrada na conta da Microsoft quando o usuário invocar a tarefa exposta no aplicativo pela tela ou pela barra de aplicativos. Como parte do manipulador de eventos de clique, você conecta seu usuário e, depois disso, executa a tarefa.

Veja alguns exemplos que mostram como integrar a entrada com uma conta da Microsoft e solicitar permissão para acessar uma conta do usuário do SkyDrive clicando em um botão na barra de aplicativos.

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;
}

}
}

Você pode personalizar a aparência do botão na barra de aplicativos usando um ativo fornecido pelas diretrizes de marca do Live Connect.

Diretrizes de desconexão do usuário

No Windows 8, um usuário pode entrar no PC usando sua conta da Microsoft ou pode ter uma conta da Microsoft ligada à conta de domínio/local. Nesse caso, seu aplicativo não precisa fornecer uma opção de desconexão. Mas alguns usuários não se conectam ao PC usando sua conta da Microsoft nem ligados à conta de domínio/local; nesse caso, se o usuário estiver conectado ao aplicativo com uma conta da Microsoft, será necessário fornecer uma opção de conexão. É possível fazer isso verificando se a conta pode ser desconectada marcando a propriedade CanSignOut da classe OnlineIdAuthenticator.

Se o aplicativo oferecer suporte a várias contas, coloque a opção de saída no menu suspenso da seção Contas depois que o usuário invocar o botão Configurações. Para os aplicativos que oferecem suporte à entrada somente com contas da Microsoft, coloque a opção de saída diretamente nas Configurações.

photobucket2

Se não for permitido sair, mostre o nome para o usuário conectado. Para obter mais informações sobre o controle SettingsFlyout, consulte a seção “Criar menu suspenso de configurações” em Diretrizes de configurações do aplicativo.

Esses exemplos de códigos mostram como desconectar o usuário com base nas nossas diretrizes.

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();
}

Para desconectar um usuário, chame o método WL.logout ou o método Microsoft.Live.LiveAuthClient.Logout.

Alguns pontos importantes

Nesta postagem do blog, mostrei como seus aplicativos podem aproveitar o logon único com contas da Microsoft da forma que os usuários do Windows 8 esperam dos aplicativos estilo Metro da Microsoft.

Também descrevi a maneira recomendada de fornecer uma opção de saída do seu aplicativo. Além dessas diretrizes, gostaria de terminar esta postagem com dois pontos importantes que evitarão que você crie experiências no seu aplicativo inconsistentes com as experiências obtidas pelos usuários de aplicativos da Microsoft.

  • Não exiba controles ou diálogos para conectar ou desconectar um usuário diferente dos exibidos aqui. O uso do diálogo de entrada fornecido pelo Live SDK pode ajudar a garantir aos seus usuários que o aplicativo não pode acessar diretamente suas credenciais de conta da Microsoft.
  • Não exiba as opções de entrada e saída da conta da Microsoft em nenhum outro local diferente do controle SettingsFlyout ou parte de uma tarefa. Os usuários de aplicativos estilo Metro esperam que as opções de gerenciamento de conta estejam no botão Configurações, caso contrário, isso levará a uma experiência inconsistente e inesperada para seus usuários.

Para saber mais sobre o Live SDK, leia a nossa documentação, baixe o Live SDK e faça perguntas nos nossos fóruns.

--Dare Obasanjo 
   gerente geral de programas sênior, plataforma Live Connect