Agregue autenticación a su aplicación de Xamarin FormsAdd authentication to your Xamarin Forms app

Nota

Visual Studio App Center admite servicios integrados de un extremo a otro fundamentales para el desarrollo de aplicaciones móviles.Visual Studio App Center supports end to end and integrated services central to mobile app development. Los desarrolladores pueden usar los servicios de compilación, prueba y distribución para configurar la canalización de integración y entrega continuas.Developers can use Build, Test and Distribute services to set up Continuous Integration and Delivery pipeline. Una vez que se ha implementado la aplicación, los desarrolladores pueden supervisar el estado y el uso de su aplicación con los servicios de análisis y diagnóstico, e interactuar con los usuarios que utilizan el servicio de Push (inserción).Once the app is deployed, developers can monitor the status and usage of their app using the Analytics and Diagnostics services, and engage with users using the Push service. Además, los desarrolladores pueden aprovechar Auth para autenticar a los usuarios y el servicio de datos para almacenar y sincronizar los datos de la aplicación en la nube.Developers can also leverage Auth to authenticate their users and Data service to persist and sync app data in the cloud.

Si está pensando en integrar servicios en la nube en su aplicación para dispositivos móviles, regístrese en App Center hoy mismo.If you are looking to integrate cloud services in your mobile application, sign up with App Center today.

Información generalOverview

En este tema se muestra cómo autenticar usuarios de una aplicación móvil de App Service desde la aplicación cliente.This topic shows you how to authenticate users of an App Service Mobile App from your client application. En este tutorial se agrega autenticación al proyecto de inicio rápido de Xamarin Forms mediante un proveedor de identidades compatible con App Service.In this tutorial, you add authentication to the Xamarin Forms quickstart project using an identity provider that is supported by App Service. Una vez que la aplicación móvil haya realizado la autenticación y la autorización correctamente, se mostrará el valor de identificador de usuario y podrá acceder a datos de tabla restringida.After being successfully authenticated and authorized by your Mobile App, the user ID value is displayed, and you will be able to access restricted table data.

Requisitos previosPrerequisites

Para obtener el mejor resultado con este tutorial, se recomienda completar primero el tutorial Creación de una aplicación Xamarin Forms.For the best result with this tutorial, we recommend that you first complete the Create a Xamarin Forms app tutorial. Después de completar este tutorial, tendrá un proyecto de Xamarin Forms que es una aplicación TodoList multiplataforma.After you complete this tutorial, you will have a Xamarin Forms project that is a multi-platform TodoList app.

Si no usa el proyecto de servidor de inicio rápido descargado, debe agregar el paquete de extensión de autenticación al proyecto.If you do not use the downloaded quick start server project, you must add the authentication extension package to your project. Para obtener más información acerca de los paquetes de extensión de servidor, consulte Trabajar con el SDK del servidor back-end de .NET para Azure Mobile Apps.For more information about server extension packages, see Work with the .NET backend server SDK for Azure Mobile Apps.

Registro de la aplicación para la autenticación y configuración de App ServicesRegister your app for authentication and configure App Services

En primer lugar, debe registrar la aplicación en el sitio del proveedor de identidades y, a continuación, establecerá las credenciales generadas por el proveedor en el back-end de Mobile Apps.First, you need to register your app at an identity provider's site, and then you will set the provider-generated credentials in the Mobile Apps back end.

  1. Configure el proveedor de identidades preferido siguiendo las instrucciones específicas del proveedor:Configure your preferred identity provider by following the provider-specific instructions:

  2. Repita los pasos anteriores para cada proveedor que desee admitir en su aplicación.Repeat the previous steps for each provider you want to support in your app.

Adición de la aplicación a las direcciones URL de redirección externa permitidasAdd your app to the Allowed External Redirect URLs

La autenticación segura requiere que se defina un nuevo esquema de dirección URL para la aplicación.Secure authentication requires that you define a new URL scheme for your app. Esto permite que el sistema de autenticación se redirija a la aplicación una vez completado el proceso de autenticación.This allows the authentication system to redirect back to your app once the authentication process is complete. En este tutorial, se usará el esquema de dirección URL appname.In this tutorial, we use the URL scheme appname throughout. Sin embargo, puede utilizar cualquier otro esquema de dirección URL que elija.However, you can use any URL scheme you choose. Debe ser único para la aplicación móvil.It should be unique to your mobile application. Para habilitar la redirección en el lado de servidor:To enable the redirection on the server side:

  1. En Azure Portal, seleccione el servicio App Service.In the Azure portal, select your App Service.

  2. Haga clic en la opción de menú Autenticación/autorización.Click the Authentication / Authorization menu option.

  3. En URL de redirección externas permitidas, introduzca url_scheme_of_your_app://easyauth.callback.In the Allowed External Redirect URLs, enter url_scheme_of_your_app://easyauth.callback. El valor de esquema_de_dirección_URL_de_la_aplicación de esta cadena es el esquema de dirección URL para la aplicación móvil.The url_scheme_of_your_app in this string is the URL Scheme for your mobile application. Debe seguir la especificación normal de las direcciones URL para un protocolo (usar únicamente letras y números, y comenzar por una letra).It should follow normal URL specification for a protocol (use letters and numbers only, and start with a letter). Debe tomar nota de la cadena que elija ya que necesitará ajustar el código de la aplicación móvil con el esquema de direcciones URL en varios sitios.You should make a note of the string that you choose as you will need to adjust your mobile application code with the URL Scheme in several places.

  4. Haga clic en OK.Click OK.

  5. Haga clic en Save(Guardar).Click Save.

Restricción de los permisos para los usuarios autenticadosRestrict permissions to authenticated users

De forma predeterminada, se pueden invocar las API en un back-end de Mobile Apps de forma anónima.By default, APIs in a Mobile Apps back end can be invoked anonymously. A continuación, deberá restringir el acceso a solo los clientes autenticados.Next, you need to restrict access to only authenticated clients.

  • Back-end de Node.js (a través de Azure Portal) :Node.js back end (via the Azure portal) :

    En la configuración de Mobile Apps, haga clic en Tablas fáciles y seleccione la tabla.In your Mobile Apps settings, click Easy Tables and select your table. Haga clic en Cambiar permisos, seleccione Solo acceso autenticado para todos los permisos y luego haga clic en Guardar.Click Change permissions, select Authenticated access only for all permissions, and then click Save.

  • Back-end de .NET (C#) :.NET back end (C#):

    En el proyecto de servidor, vaya a Controladores > TodoItemController.cs.In the server project, navigate to Controllers > TodoItemController.cs. Agregue el atributo [Authorize] a la clase TodoItemController , como sigue.Add the [Authorize] attribute to the TodoItemController class, as follows. Para restringir el acceso solo a determinados métodos, también puede aplicar este atributo solo a esos métodos en lugar de la clase.To restrict access only to specific methods, you can also apply this attribute just to those methods instead of the class. Vuelva a publicar el proyecto de servidor.Republish the server project.

      [Authorize]
      public class TodoItemController : TableController<TodoItem>
    
  • Back-end de Node.js (a través del código de Node.js) :Node.js backend (via Node.js code) :

    Para pedir autenticación para acceder a las tablas, agregue la siguiente línea al script del servidor de Node.js:To require authentication for table access, add the following line to the Node.js server script:

      table.access = 'authenticated';
    

    Para más información, vea Procedimientos para requerir autenticación para acceder a las tablas.For more details, see How to: Require authentication for access to tables. Para obtener información sobre cómo descargar el proyecto de código de inicio rápido desde el sitio, vea Procedimientos para descargar el proyecto de código de inicio rápido de un back-end de Node.js mediante Git.To learn how to download the quickstart code project from your site, see How to: Download the Node.js backend quickstart code project using Git.

Agregar autenticación a la biblioteca de clases portablesAdd authentication to the portable class library

Mobile Apps usa el método de extensión LoginAsync en MobileServiceClient para iniciar una sesión de usuario con autenticación de App Service.Mobile Apps uses the LoginAsync extension method on the MobileServiceClient to sign in a user with App Service authentication. Este ejemplo usa un flujo de autenticación administrado por servidor que muestra la interfaz de inicio de sesión del proveedor en la aplicación.This sample uses a server-managed authentication flow that displays the provider's sign-in interface in the app. Para más información, consulte Autenticación administrada por el servidor.For more information, see Server-managed authentication. Para proporcionar una mejor experiencia del usuario en la aplicación de producción, se recomienda usar la autenticación administrada por el cliente.To provide a better user experience in your production app, you should consider instead using Client-managed authentication.

Para realizar la autenticación con un proyecto de Xamarin Forms, defina en la biblioteca de clases portable una interfaz IAuthenticate para la aplicación.To authenticate with a Xamarin Forms project, define an IAuthenticate interface in the Portable Class Library for the app. Luego, agregue un botón Inicio de sesión a la interfaz de usuario definida en la biblioteca de clases portable, en el que se haga clic para iniciar la autenticación.Then add a Sign-in button to the user interface defined in the Portable Class Library, which you click to start authentication. Tras una autenticación correcta, los datos se cargan desde el back-end de la aplicación móvil.Data is loaded from the mobile app backend after successful authentication.

Implemente la interfaz IAuthenticate en cada plataforma que admitida la aplicación.Implement the IAuthenticate interface for each platform supported by your app.

  1. En Visual Studio o Xamarin Studio, abra App.cs desde el proyecto con Portable en el nombre, que es el proyecto de la biblioteca de clases portable, y agregue las siguientes instrucción using:In Visual Studio or Xamarin Studio, open App.cs from the project with Portable in the name, which is Portable Class Library project, then add the following using statement:

     using System.Threading.Tasks;
    
  2. En el archivo App.cs, agregue la siguiente definición de interfaz IAuthenticate inmediatamente antes de la definición de la clase App.In App.cs, add the following IAuthenticate interface definition immediately before the App class definition.

     public interface IAuthenticate
     {
         Task<bool> Authenticate();
     }
    
  3. Para inicializar la interfaz con una implementación específica de la plataforma, agregue los siguientes miembros estáticos a la clase App.To initialize the interface with a platform-specific implementation, add the following static members to the App class.

     public static IAuthenticate Authenticator { get; private set; }
    
     public static void Init(IAuthenticate authenticator)
     {
         Authenticator = authenticator;
     }
    
  4. Abra TodoList.xaml desde el proyecto de biblioteca de clases portable y agregue el siguiente elemento Button en el elemento de diseño buttonsPanel , después del botón existente:Open TodoList.xaml from the Portable Class Library project, add the following Button element in the buttonsPanel layout element, after the existing button:

       <Button x:Name="loginButton" Text="Sign-in" MinimumHeightRequest="30"
         Clicked="loginButton_Clicked"/>
    

    Este botón desencadena una autenticación administrada por el servidor con el back-end de aplicación móvil.This button triggers server-managed authentication with your mobile app backend.

  5. Abra TodoList.xaml.cs desde el proyecto de biblioteca de clases portable y agregue el siguiente campo a la clase TodoList :Open TodoList.xaml.cs from the Portable Class Library project, then add the following field to the TodoList class:

     // Track whether the user has authenticated.
     bool authenticated = false;
    
  6. Reemplace el método OnAppearing por el código siguiente:Replace the OnAppearing method with the following code:

     protected override async void OnAppearing()
     {
         base.OnAppearing();
    
         // Refresh items only when authenticated.
         if (authenticated == true)
         {
             // Set syncItems to true in order to synchronize the data
             // on startup when running in offline mode.
             await RefreshItems(true, syncItems: false);
    
             // Hide the Sign-in button.
             this.loginButton.IsVisible = false;
         }
     }
    

    Este código garantiza que los datos solo se actualizan desde el servicio una vez que se haya realizado la autenticación.This code makes sure that data is only refreshed from the service after you have been authenticated.

  7. Agregue el siguiente controlador para el evento Clicked a la clase TodoList:Add the following handler for the Clicked event to the TodoList class:

     async void loginButton_Clicked(object sender, EventArgs e)
     {
         if (App.Authenticator != null)
             authenticated = await App.Authenticator.Authenticate();
    
         // Set syncItems to true to synchronize the data on startup when offline is enabled.
         if (authenticated == true)
             await RefreshItems(true, syncItems: false);
     }
    
  8. Guarde los cambios, vuelva a compilar el proyecto de biblioteca de clases portable y compruebe que no haya errores.Save your changes and rebuild the Portable Class Library project verifying no errors.

Agregar autenticación a la aplicación de AndroidAdd authentication to the Android app

En esta sección se muestra cómo implementar la interfaz IAuthenticate en el proyecto de aplicación de Android.This section shows how to implement the IAuthenticate interface in the Android app project. Omita esta sección si no ofrece compatibilidad con dispositivos Android.Skip this section if you are not supporting Android devices.

  1. En Visual Studio o Xamarin Studio, haga clic con el botón derecho en el proyecto droid y luego en Establecer como proyecto de inicio.In Visual Studio or Xamarin Studio, right-click the droid project, then Set as StartUp Project.

  2. Presione F5 para iniciar el proyecto en el depurador y después compruebe que, después de iniciarse la aplicación, se genera una excepción no controlada con el código de estado 401 (No autorizado).Press F5 to start the project in the debugger, then verify that an unhandled exception with a status code of 401 (Unauthorized) is raised after the app starts. El código 401 aparece porque el acceso en el back-end está restringido únicamente a usuarios autorizados.The 401 code is produced because access on the backend is restricted to authorized users only.

  3. Abra MainActivity.cs en el proyecto de Android y agregue las siguientes instrucciones using:Open MainActivity.cs in the Android project and add the following using statements:

     using Microsoft.WindowsAzure.MobileServices;
     using System.Threading.Tasks;
    
  4. Actualice la clase MainActivity para implementar la interfaz IAuthenticate, como sigue:Update the MainActivity class to implement the IAuthenticate interface, as follows:

     public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsApplicationActivity, IAuthenticate
    
  5. Actualice la clase MainActivity, para lo que debe agregar un campo MobileServiceUser y un método Authenticate, lo que necesita la interfaz IAuthenticate, como se indica a continuación:Update the MainActivity class by adding a MobileServiceUser field and an Authenticate method, which is required by the IAuthenticate interface, as follows:

     // Define an authenticated user.
     private MobileServiceUser user;
    
     public async Task<bool> Authenticate()
     {
         var success = false;
         var message = string.Empty;
         try
         {
             // Sign in with Facebook login using a server-managed flow.
             user = await TodoItemManager.DefaultManager.CurrentClient.LoginAsync(this, 
                 MobileServiceAuthenticationProvider.Facebook, "{url_scheme_of_your_app}");
             if (user != null)
             {
                 message = string.Format("you are now signed-in as {0}.",
                     user.UserId);
                 success = true;
             }
         }
         catch (Exception ex)
         {
             message = ex.Message;
         }
    
         // Display the success or failure message.
         AlertDialog.Builder builder = new AlertDialog.Builder(this);
         builder.SetMessage(message);
         builder.SetTitle("Sign-in result");
         builder.Create().Show();
    
         return success;
     }
    

    Si usa un proveedor de identidades que no sea Facebook, elija un valor diferente para MobileServiceAuthenticationProvider.If you are using an identity provider other than Facebook, choose a different value for MobileServiceAuthenticationProvider.

  6. Para actualizar el archivo AndroidManifest.xml, agregue el siguiente código XML dentro del elemento <application>:Update the AndroidManifest.xml file by adding the following XML inside the <application> element:

    <activity android:name="com.microsoft.windowsazure.mobileservices.authentication.RedirectUrlActivity" android:launchMode="singleTop" android:noHistory="true">
      <intent-filter>
        <action android:name="android.intent.action.VIEW" />
        <category android:name="android.intent.category.DEFAULT" />
        <category android:name="android.intent.category.BROWSABLE" />
        <data android:scheme="{url_scheme_of_your_app}" android:host="easyauth.callback" />
      </intent-filter>
    </activity>
    

    Reemplace {url_scheme_of_your_app} por el esquema de dirección URL.Replace {url_scheme_of_your_app} with your URL scheme.

  7. Agregue el siguiente código al método onCreate de la clase MainActivity antes de la llamada a LoadApplication():Add the following code to the OnCreate method of the MainActivity class before the call to LoadApplication():

     // Initialize the authenticator before loading the app.
     App.Init((IAuthenticate)this);
    

    Este código garantiza que el autenticador se inicializa antes de que se cargue la aplicación.This code ensures the authenticator is initialized before the app loads.

  8. Vuelva a compilar la aplicación, ejecútela, inicie sesión con el proveedor de autenticación que elija y compruebe que pueda acceder a los datos como usuario autenticado.Rebuild the app, run it, then sign in with the authentication provider you chose and verify you are able to access data as an authenticated user.

solución de problemasTroubleshooting

La aplicación se ha bloqueado con Java.Lang.NoSuchMethodError: No static method startActivityThe application crashed with Java.Lang.NoSuchMethodError: No static method startActivity

En algunos casos, los conflictos en los paquetes de soporte aparecen como simples advertencias en Visual Studio, pero la aplicación se bloquea con esta excepción en tiempo de ejecución.In some cases, conflicts in the support packages displayed as just a warning in the Visual studio, but the application crashes with this exception at runtime. En este caso tiene que asegurarse de que todos los paquetes de soporte a los que se hace referencia en el proyecto tengan la misma versión.In this case you need to make sure that all the support packages referenced in your project have the same version. El paquete NuGet de Azure Mobile Apps tiene la dependencia Xamarin.Android.Support.CustomTabs para la plataforma Android, por lo que si el proyecto usa paquetes de soporte más recientes, tiene que instalar este paquete con la versión necesaria directamente para evitar conflictos.The Azure Mobile Apps NuGet package has Xamarin.Android.Support.CustomTabs dependency for Android platform, so if your project uses newer support packages you need to install this package with required version directly to avoid conflicts.

Agregar autenticación a la aplicación de iOSAdd authentication to the iOS app

En esta sección se muestra cómo implementar la interfaz IAuthenticate en el proyecto de aplicación de iOS.This section shows how to implement the IAuthenticate interface in the iOS app project. Omita esta sección si no ofrece compatibilidad con dispositivos iOS.Skip this section if you are not supporting iOS devices.

  1. En Visual Studio o Xamarin Studio, haga clic con el botón derecho en el proyecto iOS y luego en Establecer como proyecto de inicio.In Visual Studio or Xamarin Studio, right-click the iOS project, then Set as StartUp Project.

  2. Presione F5 para iniciar el proyecto en el depurador y después compruebe que, después de iniciarse la aplicación, se genera una excepción no controlada con el código de estado 401 (No autorizado).Press F5 to start the project in the debugger, then verify that an unhandled exception with a status code of 401 (Unauthorized) is raised after the app starts. La respuesta 401 aparece porque el acceso en el back-end está restringido únicamente a usuarios autorizados.The 401 response is produced because access on the backend is restricted to authorized users only.

  3. Abra el archivo AppDelegate.cs en el proyecto de iOS y agregue las siguientes instrucciones using:Open AppDelegate.cs in the iOS project and add the following using statements:

     using Microsoft.WindowsAzure.MobileServices;
     using System.Threading.Tasks;
    
  4. Actualice la clase AppDelegate para implementar la interfaz IAuthenticate como se indica a continuación:Update the AppDelegate class to implement the IAuthenticate interface, as follows:

     public partial class AppDelegate : global::Xamarin.Forms.Platform.iOS.FormsApplicationDelegate, IAuthenticate
    
  5. Actualice la clase AppDelegate, para lo que debe agregar un campo MobileServiceUser y un método Authenticate, lo que necesita la interfaz IAuthenticate, como se indica a continuación:Update the AppDelegate class by adding a MobileServiceUser field and an Authenticate method, which is required by the IAuthenticate interface, as follows:

     // Define an authenticated user.
     private MobileServiceUser user;
    
     public async Task<bool> Authenticate()
     {
         var success = false;
         var message = string.Empty;
         try
         {
             // Sign in with Facebook login using a server-managed flow.
             if (user == null)
             {
                 user = await TodoItemManager.DefaultManager.CurrentClient
                     .LoginAsync(UIApplication.SharedApplication.KeyWindow.RootViewController,
                     MobileServiceAuthenticationProvider.Facebook, "{url_scheme_of_your_app}");
                 if (user != null)
                 {
                     message = string.Format("You are now signed-in as {0}.", user.UserId);
                     success = true;
                 }
             }
         }
         catch (Exception ex)
         {
            message = ex.Message;
         }
    
         // Display the success or failure message.
         UIAlertController avAlert = UIAlertController.Create("Sign-in result", message, UIAlertControllerStyle.Alert);
         avAlert.AddAction(UIAlertAction.Create("OK", UIAlertActionStyle.Default, null));
         UIApplication.SharedApplication.KeyWindow.RootViewController.PresentViewController(avAlert, true, null);
    
         return success;
     }
    

    Si usa un proveedor de identidades que no sea Facebook, elija otro valor para [MobileServiceAuthenticationProvider].If you are using an identity provider other than Facebook, choose a different value for [MobileServiceAuthenticationProvider].

  6. Para actualizar la clase AppDelegate, agregue la sobrecarga del método OpenUrl, como se indica a continuación:Update the AppDelegate class by adding the OpenUrl method overload, as follows:

     public override bool OpenUrl(UIApplication app, NSUrl url, NSDictionary options)
     {
         return TodoItemManager.DefaultManager.CurrentClient.ResumeWithURL(url);
     }
    
  7. Agregue la siguiente línea de código al método FinishedLaunching antes de la llamada a LoadApplication():Add the following line of code to the FinishedLaunching method before the call to LoadApplication():

     App.Init(this);
    

    Este código garantiza que el autenticador se inicializa antes de que se cargue la aplicación.This code ensures the authenticator is initialized before the app is loaded.

  8. Abra Info.plist y agregue un Tipo de dirección URL.Open Info.plist and add a URL Type. Establezca Identificador en un nombre de su elección, Esquemas de dirección URL en el esquema de dirección URL de la aplicación y Rol en None.Set the Identifier to a name of your choosing, the URL Schemes to the URL scheme for your app, and the Role to None.

  9. Vuelva a compilar la aplicación, ejecútela, inicie sesión con el proveedor de autenticación que elija y compruebe que pueda acceder a los datos como usuario autenticado.Rebuild the app, run it, then sign in with the authentication provider you chose and verify you are able to access data as an authenticated user.

Adición de autenticación a proyectos de aplicaciones de Windows 10 (incluyendo Phone)Add authentication to Windows 10 (including Phone) app projects

En esta sección se muestra cómo implementar la interfaz IAuthenticate en proyectos de aplicaciones de Windows 10.This section shows how to implement the IAuthenticate interface in the Windows 10 app projects. Los mismos pasos se aplican a los proyectos de plataforma universal de Windows (UWP), pero se usa el proyecto UWP (con cambios anotados).The same steps apply for Universal Windows Platform (UWP) projects, but using the UWP project (with noted changes). Omita esta sección si no ofrece compatibilidad con dispositivos Windows.Skip this section if you are not supporting Windows devices.

  1. En Visual Studio, haga clic con el botón derecho en el proyecto UWP y, luego, en Establecer como proyecto de inicio.In Visual Studio, right-click the UWP project, then Set as StartUp Project.

  2. Presione F5 para iniciar el proyecto en el depurador y después compruebe que, después de iniciarse la aplicación, se genera una excepción no controlada con el código de estado 401 (No autorizado).Press F5 to start the project in the debugger, then verify that an unhandled exception with a status code of 401 (Unauthorized) is raised after the app starts. La respuesta 401 de produce porque el acceso en el back-end está restringido únicamente a usuarios autorizados.The 401 response happens because access on the backend is restricted to authorized users only.

  3. Abra el archivo MainPage.xaml.cs en el proyecto de aplicación de Windows y agregue las siguientes instrucciones using :Open MainPage.xaml.cs for the Windows app project and add the following using statements:

     using Microsoft.WindowsAzure.MobileServices;
     using System.Threading.Tasks;
     using Windows.UI.Popups;
     using <your_Portable_Class_Library_namespace>;
    

    Reemplace <your_Portable_Class_Library_namespace> por el espacio de nombres de la biblioteca de clases portable.Replace <your_Portable_Class_Library_namespace> with the namespace for your portable class library.

  4. Actualice la clase MainPage para implementar la interfaz IAuthenticate como se indica a continuación:Update the MainPage class to implement the IAuthenticate interface, as follows:

     public sealed partial class MainPage : IAuthenticate
    
  5. Actualice la clase MainPage, para lo que debe agregar un campo MobileServiceUser y un método Authenticate, lo que necesita la interfaz IAuthenticate, como se indica a continuación:Update the MainPage class by adding a MobileServiceUser field and an Authenticate method, which is required by the IAuthenticate interface, as follows:

     // Define an authenticated user.
     private MobileServiceUser user;
    
     public async Task<bool> Authenticate()
     {
         string message = string.Empty;
         var success = false;
    
         try
         {
             // Sign in with Facebook login using a server-managed flow.
             if (user == null)
             {
                 user = await TodoItemManager.DefaultManager.CurrentClient
                     .LoginAsync(MobileServiceAuthenticationProvider.Facebook, "{url_scheme_of_your_app}");
                 if (user != null)
                 {
                     success = true;
                     message = string.Format("You are now signed-in as {0}.", user.UserId);
                 }
             }
    
         }
         catch (Exception ex)
         {
             message = string.Format("Authentication Failed: {0}", ex.Message);
         }
    
         // Display the success or failure message.
         await new MessageDialog(message, "Sign-in result").ShowAsync();
    
         return success;
     }
    

    Si usa un proveedor de identidades que no sea Facebook, elija un valor diferente para MobileServiceAuthenticationProvider.If you are using an identity provider other than Facebook, choose a different value for MobileServiceAuthenticationProvider.

  6. Agregue la siguiente línea de código en el constructor para la clase MainPage antes de la llamada a LoadApplication():Add the following line of code in the constructor for the MainPage class before the call to LoadApplication():

     // Initialize the authenticator before loading the app.
     <your_Portable_Class_Library_namespace>.App.Init(this);
    

    Reemplace <your_Portable_Class_Library_namespace> por el espacio de nombres de la biblioteca de clases portable.Replace <your_Portable_Class_Library_namespace> with the namespace for your portable class library.

  7. Si utiliza UWP, agregue el siguiente reemplazo del método OnActivated a la clase App:If you are using UWP, add the following OnActivated method override to the App class:

    protected override void OnActivated(IActivatedEventArgs args)
    {
        base.OnActivated(args);
    
         if (args.Kind == ActivationKind.Protocol)
         {
             ProtocolActivatedEventArgs protocolArgs = args as ProtocolActivatedEventArgs;
             MobileServiceClientExtensions.ResumeWithURL(TodoItemManager.DefaultManager.CurrentClient,protocolArgs.Uri);
         }
    }
    
  8. Abra Package.appxmanifest y agregue una declaración Protocol.Open Package.appxmanifest and add a Protocol declaration. Establezca Nombre para mostrar en un nombre de su elección y Nombre en el esquema de dirección URL para la aplicación.Set the Display name to a name of your choosing, and the Name to the URL scheme for you app.

  9. Vuelva a compilar la aplicación, ejecútela, inicie sesión con el proveedor de autenticación que elija y compruebe que pueda acceder a los datos como usuario autenticado.Rebuild the app, run it, then sign in with the authentication provider you chose and verify you are able to access data as an authenticated user.

Pasos siguientesNext steps

Ahora que ha completado este tutorial de autenticación básica, considere la posibilidad de continuar con uno de los siguientes tutoriales:Now that you completed this basic authentication tutorial, consider continuing on to one of the following tutorials:

  • Agregar notificaciones push a la aplicaciónAdd push notifications to your app

    : aprenda a agregar a la aplicación compatibilidad con notificaciones push y a configurar su back-end de aplicación móvil para usar Azure Notification Hubs para enviar notificaciones push.Learn how to add push notifications support to your app and configure your Mobile App backend to use Azure Notification Hubs to send push notifications.

  • Activación de la sincronización sin conexión para la aplicación de WindowsEnable offline sync for your app

    Aprenda a agregar compatibilidad sin conexión a una aplicación con un back-end de aplicación móvil.Learn how to add offline support your app using a Mobile App backend. La sincronización sin conexión permite a los usuarios finales interactuar con una aplicación móvil (ver, agregar o modificar datos), incluso cuando no haya conexión de red.Offline sync allows end users to interact with a mobile app - viewing, adding, or modifying data - even when there is no network connection.