Determinar la edad del usuario

En este tema se describe y se demuestra cómo obtener la edad de un usuario que almacenó esa información en los servicios Live. En el ejemplo que proporcionamos aquí, se deshabilita un control de compras hasta que la aplicación compruebe que el usuario que inició sesión tiene al menos 18 años de edad.

Cuando la aplicación interactúa con el usuario, cierta información es esencial para garantizar una correcta experiencia de usuario. Conocer la edad del usuario es un muy buen ejemplo, en especial si la aplicación permite acciones como la compra de medios con restricciones de edad desde la aplicación.

En este tema se da por sentado que la aplicación ya inicializó las API de Live Connect, y que el usuario inició sesión y autorizó el ámbito wl.birthday (que concede acceso a la información de su fecha de nacimiento). Para obtener información más detallada sobre estos pasos iniciales, consulta Inicio de sesión de usuarios y Obtener el consentimiento del usuario.

Para sacar el máximo partido de las muestras de código de este tema, puedes usarlas en el contexto de muestras de código de referencia más grandes que proporcionamos en Trabajar con las muestras de código.

Trabajar con la edad del usuario en JavaScript y HTML para aplicaciones de la Tienda Windows

En este ejemplo de código, la función WL.api solicita información para me, que devuelve la información de perfil del usuario que inició sesión.

Después de la devolución de WL.api, response.birth_year contiene el año de nacimiento que el usuario almacenó en el perfil y que se usa para calcular su edad.


function userAge_onClick() {
    WL.login({
        scope: ["wl.signin", "wl.birthday"]
    }).then(
        function (response) {
            WL.api({
                path: "me",
                method: "GET"
            }).then(
                function (response) {
                    if (response.birth_year) {
                        var date = new Date();
                        var year = date.getFullYear();
                        var age = year - response.birth_year;
                        if (age >= 18) {
                            document.getElementById("purchaseButton").disabled = "";
                            document.getElementById("infoArea").innerText =
                                "Age is 18 or older. Purchase button enabled.";
                        }
                        else {
                            document.getElementById("purchaseButton").disabled = "disabled";
                            document.getElementById("infoArea").innerText =
                                "Age is under 18. Purchase button disabled.";
                        }
                    }
                    else {
                        document.getElementById("purchaseButton").disabled = "disabled";
                        document.getElementById("infoArea").innerText =
                            "Cannot determine age. Purchase button disabled.";
                    }
                },
                function (responseFailed) {
                    document.getElementById("infoArea").innerText =
                        "Error calling API: " + responseFailed.error.message;
                }
            );
        },
        function (responseFailed) {
            document.getElementById("infoArea").innerText =
                "Error signing in: " + responseFailed.error_description;
        }
    );
}

function purchaseButton_onClick() {
    document.getElementById("infoArea").innerText =
        "Purchase button clicked."; 
}


Arriba

Trabajar con la edad del usuario en C# para aplicaciones de la Tienda Windows y aplicaciones de Windows Phone

En este ejemplo de código, el método LiveConnectClient.GetAsync solicita información para me, que devuelve la información de perfil del usuario que inició sesión. La edad del usuario se calcula a partir del año de nacimiento que figura en la información que se devuelve.


private async void btnAge_Click(object sender, RoutedEventArgs e)
{
    try
    {
        LiveConnectClient liveClient = new LiveConnectClient(this.session);
        LiveOperationResult operationResult = await liveClient.GetAsync("me");
        dynamic result = operationResult.Result;
        if (result.birth_year != null)
        {
            DateTime date = DateTime.Now;
            int year = date.Year;
            int age = year - (int)result.birth_year;
            if (age >= 18)
            {
                infoTextBlock.Text = "Age is 18 or older. Purchase button enabled.";
                btnPurchase.IsEnabled = true;
            }
            else
            {
                infoTextBlock.Text = "Age is under 18. Purchase button disabled.";
            }
        }
        else
        {
            infoTextBlock.Text = "Could not determine birth year. Purchase button disabled.";
        }

    }
    catch (LiveConnectException exception)
    {
        infoTextBlock.Text = "Error getting user info: " + exception.Message;
    }
}

private void btnPurchase_Click(object sender, RoutedEventArgs e)
{
    infoTextBlock.Text = "Purchase button clicked.";
}


Arriba

Trabajar con la edad del usuario en Objective-C para iOS

En este ejemplo de código, el método LiveConnectClient getWithPath:delegate solicita información para me, que devuelve la información de perfil del usuario que inició sesión. El método liveOperationSucceeded:operation después calcula la edad del usuario a partir del año de nacimiento que figura en la información que se devuelve, para determinar si el botón de compra debe habilitarse.


- (void) getAge
{
    [self.liveClient getWithPath:@"me" 
                        delegate:self];
}

- (void) liveOperationSucceeded:(LiveOperation *)operation
{
    NSDate *currentDate = [NSDate date];
    NSCalendar* calendar = [NSCalendar currentCalendar];
    NSDateComponents* dateComponents = [calendar components:NSYearCalendarUnit 
                                                   fromDate:currentDate];
    NSInteger currentYear = [dateComponents year];
    NSInteger usersBirthYear = (int)[operation.result objectForKey:@"birth_year"];
    NSInteger age = currentYear - usersBirthYear; 
    if (age >= 18)
    {
        self.purchaseButton.enabled = YES;
    }
    else
    {
        self.purchaseButton.enabled = NO;
    }
}


Arriba

Trabajar con la edad del usuario en Java para Android

En este ejemplo de código, el método LiveConnectClient.getAsync solicita información para me, que devuelve la información de perfil del usuario que inició sesión. El método updateRestrictedButton personalizado después calcula la edad del usuario a partir del año de nacimiento que figura en la información que se devuelve, para determinar si el botón de compra debe habilitarse.


public void getUserAge() {
    client.getAsync("me", new LiveOperationListener() {
        public void onError(LiveOperationException exception, LiveOperation operation) {
            resultTextView.setText("Error getting user info: " + exception.getMessage());
        }
        public void onComplete(LiveOperation operation) {
            JSONObject result = operation.getResult();
            updateRestrictedButton(result);
        }
    });
}

private void updateRestrictedButton(JSONObject user) {
    boolean enable = false;
    if (user != null) {
        int birthYear = user.optInt("birth_year");
        if (birthYear > 0) {
            int year = new Date().getYear();
            int age = year - birthYear;
            if (age >= 18) {
                enable = true;
            }
        }
    }
    if (enable == true) {
        resultTextView.setText("Purchase button enabled.");
    }
    else {
        resultTextView.setText("Purchase button disabled.");
    }
}


Arriba

Trabajar con la edad del usuario mediante REST

Una vez que hayas realizado la llamada de GET correspondiente en la transferencia de estado representacional (REST), podrás encontrar la información del usuario en la respuesta. La respuesta se devuelve en el formato de notación de objetos JavaScript (JSON), que puedes analizar para buscar las estructuras individuales. A continuación te mostramos cómo hacer una llamada de GET cuando el usuario que inició sesión está representado como me.

GET https://apis.live.net/v5.0/me?access_token=ACCESS_TOKEN

Para un usuario ficticio, la información con formato JSON que se devuelve debería ser similar a la siguiente.

{
  "first_name" : "Luka",
  "last_name" : "Abrus",
  "birth_month" : 6,
  "birth_date" : 26,
  "birth_year" : 1968
}

Arriba

Pasos siguientes

En este tema se demuestra cómo usar el ámbito wl.birthday para obtener el año de nacimiento de un usuario y determinar si tiene la edad suficiente para hacer determinadas compras con tu aplicación. Más información:

Arriba

 

 

Mostrar:
© 2014 Microsoft