Возраст пользователя

В разделе описано и показано, как определить возраст пользователя, если он сохранил данные об этом в службах Live. В данном примере элемент управления покупкой остается отключенным, пока приложение не проверит, исполнилось ли пользователю 18 лет.

При взаимодействии вашего приложения с пользователем некоторая информация имеет критическое значение для обеспечения правильного взаимодействия с пользователем. Информация о возрасте пользователя особенно важна, если ваше приложение предполагает такие действия, как покупка из приложения содержимого, имеющего возрастные ограничения.

В этом разделе предполагается, что ваше приложение уже выполнило инициализацию API Live Connect, а пользователь выполнил вход и дал согласие на использование области wl.birthday (для получения даты его рождения). Подробнее об этих начальных этапах: Вход пользователей и Получение согласия пользователя.

Чтобы максимально использовать примеры кодов, приведенные в этом разделе, вы можете применять их в контексте более широких образцов кода, представленных в разделе Работа с примерами кодов.

Работа с возрастом пользователя на JavaScript и HTML для приложений Магазина Windows

В этом примере кода функция WL.api запрашивает сведения о me, который возвращает данные профиля пользователя, выполнившего вход.

После возвращения WL.apiresponse.birth_year содержит год рождения, сохраненный пользователем в профиле; этот код использует для расчета возраста пользователя.


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


К началу

Работа с возрастом пользователя на C# для приложений Магазина Windows и Windows Phone

В этом примере кода метод LiveConnectClient.GetAsync запрашивает сведения о me, который возвращает данные профиля пользователя, выполнившего вход. Возраст пользователя рассчитывается исходя из года рождения, содержащегося в возвращенных данных.


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


К началу

Работа с возрастом пользователя на Objective-C для iOS

В этом примере кода метод LiveConnectClient getWithPath:delegate запрашивает сведения о me, который возвращает данные профиля пользователя, выполнившего вход. Чтобы определить, следует ли включить кнопку покупки, метод liveOperationSucceeded:operation рассчитывает возраст пользователя исходя из года рождения, содержащегося в возвращенных данных.


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


К началу

Работа с возрастом пользователя на Java для Android

В этом примере кода метод LiveConnectClient.getAsync запрашивает сведения о me, который возвращает данные профиля пользователя, выполнившего вход. Чтобы определить, следует ли включить кнопку покупки, пользовательский метод updateRestrictedButton рассчитывает возраст пользователя исходя из года рождения, содержащегося в возвращенных данных.


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.");
    }
}


К началу

Работа с возрастом пользователя с помощью REST

После соответствующего вызова GET в REST ответ содержит сведения о пользователе. Ответ, который вы можете проанализировать для извлечения отдельных структур, возвращается в формате нотации объектов JavaScript (JSON). Так можно выполнить вызов GET, если пользователь, выполнивший вход, представлен как me.

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

Сведения вымышленного пользователя в формате JSON могут выглядеть следующим образом.

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

К началу

Последующие действия

В этом разделе показано, как использовать область wl.birthday, чтобы узнать дату рождения пользователя и определить, можно ли ему делать определенные покупки через ваше приложение. Дополнительные сведения по следующим темам

К началу

 

 

Показ:
© 2015 Microsoft