Outlook.com 연락처 만들기 및 읽기

여기에서 계정 복구

이 항목에서는 앱이 Live Connect API를 사용하여 다음 언어로 Outlook.com 사용자의 연락처를 만들고 읽는 방법을 설명합니다.

앱에서 사용자의 연락처를 읽으려면 사용자가 앱에 wl.basic 범위를 부여했어야 합니다. 사용자의 연락처 목록에 새 연락처를 추가하려면 wl.contacts_create 범위가 필요합니다. 앱에서 필요한 범위를 요청하는 방법에 대한 자세한 내용은 사용자 동의 얻기를 참조하세요.

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

연락처 ID 지정

다음 예제에 표시된 연락처 ID는 가상 ID이므로 실제 앱에서는 작동하지 않습니다. 앱에서는 유효한 연락처 ID를 사용해야 합니다. 다음은 경로 매개 변수에 사용할 연락처 ID를 가져오는 방법에 대한 몇 가지 예제입니다.

  • 연락처의 연락처 ID 사용
  • me를 사용자 ID로 지정하여 현재 로그인한 사용자의 연락처 및 친구에 대한 정보를 가져옵니다.
    • 로그인한 사용자의 모든 연락처에 대한 정보를 가져오려는 경우 me/contacts
    • me/friends로그인한 사용자의 모든 친구에 대한 정보를 가져오려는 경우 me/friends

      참고  친구는 사용자가 친구로 초대했으며 친구 요청을 수락한 다른 Outlook.com 사용자입니다. 친구는 is_friend 구조가 true로 설정된 연락처입니다. (is_friend 구조를 프로그래밍 방식으로 설정할 수 없습니다.)

  • 누군가의 사용자 ID가 있으면 다음 예제에서와 같이 USER_ID 대신 사용자 ID를 사용하여 그 사람의 연락처 및 친구에 대한 정보를 가져옵니다.
    • USER_ID로 표시된 사용자의 모든 연락처 항목에 대한 정보를 가져오려는 경우 USER_ID/contacts
    • USER_ID로 표시된 사용자의 모든 친구 항목에 대한 정보를 가져오려는 경우 USER_ID/friends

또한 연락처 ID 인수를 사용하여 컬렉션에서 반환된 결과를 필터링할 수 있습니다. 예를 들면 다음과 같습니다.

  • 이전 코드에서 limit 매개 변수를 사용하여 가져올 항목 수를 지정하여 제한된 수의 연락처 또는 친구 항목을 가져올 수 있습니다. 예를 들어, 로그인한 사용자의 처음 두 연락처 항목을 가져오려면 me/contacts?limit=2를 사용합니다.
  • 이전 코드에서 offset 매개 변수를 가져오려는 첫 번째 항목의 인덱스로 설정하여 가져올 첫 번째 연락처 또는 친구 항목을 지정할 수 있습니다. 예를 들어, 로그인한 사용자의 세 번째 연락처 항목에서 시작하는 연락처 항목을 두 개 가져오려면 me/contacts?limit=2&offset=3을 사용합니다.

    참고  반환된 JSON(JavaScript Object Notation) 형식의 개체에서 이전 및 다음 항목의 offsetlimit 매개 변수 값을 가져오기 위해 previousnext 구조의 paging 개체를 확인할 수 있습니다.

Windows 스토어 앱용 JavaScript 및 HTML에서 연락처 읽기 및 쓰기

JavaScript에서 연락처 읽기

참고  이 코드 예제에서는 경로 인수에 가상 연락처 ID를 사용합니다. 따라서 예제에 나온 값을 유효한 연락처 ID로 바꿔야 합니다.


function readContact_onClick() {
    WL.login({
        scope: "wl.basic"
    }).then(
        function (response) {
            WL.api({
                path: "contact.83960a61000000000000000000000000",
                method: "GET"
            }).then(
                function (response) {
                    document.getElementById("resultDiv").innerHTML =
                        "ID: " + response.id +
                        "<br/>Name: " + response.first_name +
                        " " + response.last_name;
                },
                function (responseFailed) {
                    document.getElementById("infoArea").innerText =
                        "Error calling API: " + responseFailed.error.message;
                }
            );
        },
        function (responseFailed) {
            document.getElementById("infoArea").innerText =
                "Error signing in: " + responseFailed.error_description;
        }
    );
}


JavaScript에서 연락처 쓰기


function createContact_onClick() {
    WL.login({
        scope: "wl.contacts_create"
    }).then(
        function (response) {
            WL.api({
                path: "me/contacts",
                method: "POST",
                body: {
                    first_name: "William",
                    last_name: "Flash"
                }
            }).then(
                function (response) {
                    document.getElementById("resultDiv").innerHTML =
                        "ID: " + response.id +
                        "<br/> Name: " + response.first_name +
                        " " + response.last_name;
                }, 
                function (responseFailed) {
                    document.getElementById("infoArea").innerText =
                        "Error calling API: " + responseFailed.error.message;
                }
            );
        }, 
        function (responseFailed) {
            document.getElementById("infoArea").innerText =
                "Error signing in: " + responseFailed.error_description;
        }
    );
}


맨 위로

Windows 스토어 앱 및 Windows Phone 앱용 C#에서 연락처 읽기 및 쓰기

C#에서 연락처 읽기

참고  이 코드 예제에서는 GetAsync 호출에 가상 연락처 ID를 사용합니다. 따라서 예제에 나온 값을 유효한 연락처 ID로 바꿔야 합니다.


private async void btnReadContact_Click(object sender, RoutedEventArgs e)
{
    try
    {
        LiveConnectClient liveClient = new LiveConnectClient(this.session);
        LiveOperationResult operationResult =
            await liveClient.GetAsync("contact.b4466224b2ca42798c3d4ea90c75aa56");
        dynamic result = operationResult.Result;
        this.infoTextBlock.Text = "Contact: " + result.name;
    }
    catch (LiveConnectException exception)
    {
        this.infoTextBlock.Text = "Error getting contact info: " + exception.Message;
    }
}


C#에서 연락처 쓰기


private async void btnCreateContact_Click(object sender, RoutedEventArgs e)
{
    try
    {
        var contact = new Dictionary<string, object>();
        contact.Add("first_name", "Roberto");
        contact.Add("last_name", "Tamburello");
        LiveConnectClient liveClient = new LiveConnectClient(this.session);
        LiveOperationResult operationResult = await liveClient.PostAsync("me/contacts", contact);
        dynamic result = operationResult.Result;
        this.infoTextBlock.Text = string.Join(" ", "Contact:", result.name, "ID:", result.id);
    }
    catch (LiveConnectException exception)
    {
        this.infoTextBlock.Text = "Error creating contact: " + exception.Message;
    }
}


맨 위로

iOS용 Objective-C에서 연락처 읽기 및 쓰기

Objective-C에서 연락처 읽기

참고  이 코드 예제에서는 getWithPath:delegate: 호출에 가상 연락처 ID를 사용합니다. 따라서 예제에 나온 값을 유효한 연락처 ID로 바꿔야 합니다.


-(void) getContact
{
    [self.liveClient getWithPath:@"contact.f347aa9f000000000000000000000000" 
                        delegate:self];
}

-(void) liveOperationSucceeded:(LiveOperation *)operation
{
    NSString *firstName = [operation.result objectForKey:@"first_name"];
    NSString *lastName = [operation.result objectForKey:@"last_name"];
    NSString *gender = [operation.result objectForKey:@"gender"];
    self.displayLabel.text = [NSString stringWithFormat:@"Last Name: %@\n First Name: %@\n Gender: %@", lastName, firstName, gender];
}


Objective-C에서 연락처 쓰기


- (void) createContact
{
    NSString *firstName = firstNameTextField.text;
    NSString *lastName = lastNameTextField.text;
    NSDictionary *postBody = [NSDictionary dictionaryWithObjectsAndKeys:        
                              firstName, @"first_name",
                              lastName, @"last_name", nil];
    [self.liveClient postWithPath:@"me/contacts" 
                         dictBody:postBody 
                         delegate:self 
                        userState:@"create contact"];
}

- (void) liveOperationSucceeded:(LiveOperation *)operation
{
    if ([operation.userState isEqual:@"create contact"]) {
        NSString *contactId = [operation.result objectForKey:@"id"];
        NSString *firstName = [operation.result objectForKey:@"first_name"];
        NSString *lastName = [operation.result objectForKey:@"last_name"];
        self.statusLabel.text = [NSString stringWithFormat: @"The contact(id: %@, first_name: %@, last_name: %@) was created.", contactId, firstName, lastName];
    }    
}

- (void) liveOperationFailed:(NSError *)error 
                   operation:(LiveOperation *)operation
{
    if ([operation.userState isEqual:@"create contact"]) {
        self.statusLabel.text = @"The contact creation failed.";
    }     
}


맨 위로

Android용 Java에서 연락처 읽기 및 쓰기

Java에서 연락처 읽기

참고  이 코드 예제에서는 contactID 문자열에 가상 연락처 ID를 사용합니다. 따라서 예제에 나온 값을 유효한 연락처 ID로 바꿔야 합니다.


public void readContact() {
    final String contactId = "contact.c1678ab4000000000000000000000000";
       final LiveOperationListener opListener = new LiveOperationListener() {
        public void onError(LiveOperationException exception, LiveOperation operation) {
            resultTextView.setText("Error getting contact info: " + exception.getMessage());
        }
        public void onComplete(LiveOperation operation) {
            JSONObject result = operation.getResult();
            resultTextView.setText("Contact's name is " + result.optString("name"));
        }
       };
    auth.login(this, Arrays.asList(new String[] { "wl.basic" }), new LiveAuthListener() {
        public void onAuthError(LiveAuthException exception, Object userState) {
            resultTextView.setText("Error signing in: " + exception.getMessage());
        }
        public void onAuthComplete(LiveStatus status, LiveConnectSession session, Object userState) {
            client.getAsync(contactId, opListener);                    
        }
    });
}


Java에서 연락처 쓰기


public void createContact() {
    JSONObject contact = new JSONObject();
    try {
        contact.put("first_name", "Roberto");
        contact.put("last_name", "Tamburello");
    } catch (JSONException e) {
        resultTextView.setText("Error building contact: " + e.getMessage());
        return;
    }
    client.postAsync("me/contacts", contact, new LiveOperationListener() {
        public void onComplete(LiveOperation operation) {
            JSONObject result = operation.getResult();
            resultTextView.setText("Contact created. Contact ID = " + result.optString("id") + 
                ", name = " + result.optString("name"));
        }
        public void onError(LiveOperationException exception, LiveOperation operation) {
            resultTextView.setText("Error creating contact: " + exception.getMessage()); 
        }
    });
} 


이전 코드에서 meUSER_ID로 변경할 수 있습니다. 여기서 USER_ID는 로그인한 사용자의 사용자 ID를 나타냅니다.

POST를 사용하는 경우 앱에서 제공해야 하는 최소 필수 및 선택 구조에 대한 자세한 내용은 REST 참조에서 "연락처 개체" 섹션을 참조하세요.

참고  친구 항목은 Live Connect API를 사용하여 만들 수 없습니다. 하지만 연락처 항목을 만든 다음 Outlook.com UI를 사용하여 해당 연락처를 친구로 초대할 수 있습니다.

맨 위로

REST를 사용하여 연락처 읽기 및 쓰기

REST를 사용하여 연락처 읽기

참고  이 코드 예제에서는 경로에 가상 연락처 ID를 사용합니다. 따라서 예제에 나온 값을 유효한 연락처 ID로 바꿔야 합니다.

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

REST를 사용하여 연락처 쓰기

POST https://apis.live.net/v5.0/me/contacts

Authorization: Bearer ACCESS_TOKEN
Content-Type: application/json

{
    "first_name": "Roberto",
    "last_name": "Tamburello"
}

맨 위로

 

 

표시:
© 2015 Microsoft