사용자 연령 확인

이 항목에서는 사용자가 연령 정보를 Live 서비스에 저장하도록 선택한 경우 그 연령 정보를 가져오는 방법을 설명하고 보여 줍니다. 여기에 제공된 예제에서는 로그인한 사용자가 18세 이상임을 앱이 확인할 때까지 구매 컨트롤을 사용할 수 없습니다.

앱이 사용자와 상호 작용할 때 일부 정보는 적절한 사용자 환경을 보장하는 데 중요합니다. 사용자의 연령을 아는 것, 특히 연령이 제한된 미디어의 앱 내 구매 같은 동작을 앱이 허용하는 경우가 대표적인 예입니다.

이 항목에서는 앱이 이미 Live Connect API를 초기화했고, 사용자가 로그인했으며, 사용자의 생년월일 정보를 가져올 수 있도록 하는 wl.birthday 범위에 사용자가 동의했다고 가정합니다. 이 초기 단계에 대한 자세한 내용은 사용자 로그인사용자 동의 얻기를 참조하세요.

코드 예제 사용에 제공된 더 큰 코드 참조 샘플의 컨텍스트에서 이 항목의 코드 예제를 모두 활용할 수 있습니다.

Windows 스토어 앱용 JavaScript 및 HTML에서 사용자 연령 계산

이 코드에서 WL.api 함수는 me에 대한 정보를 요청하고, 이에 따라 로그인한 사용자의 프로필 정보가 반환됩니다.

WL.api가 반환되면 사용자가 프로필에 저장한 출생 연도가 response.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."; 
}


맨 위로

Windows 스토어 앱 및 Windows Phone 앱용 C#에서 사용자 연령 계산

이 코드에서 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.";
}


맨 위로

iOS용 Object-C에서 사용자 연령 계산

이 코드에서 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;
    }
}


맨 위로

Android용 Java에서 사용자 연령 계산

이 코드에서 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를 사용하여 사용자 연령 계산

REST(Representational State Transfer)에서 적합한 GET 호출을 수행하면 사용자 정보가 응답으로 반환됩니다. 응답은 JSON(JavaScript Object Notation) 형식으로 반환되며, 그 안의 개별 구조를 가져오기 위해 구문 분석할 수 있습니다. 로그인한 사용자가 me로 나타나는 경우 GET을 호출하는 방법은 다음과 같습니다.

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