建立和讀取 Outlook.com 連絡人

在這裡還原帳戶

本主題說明您的應用程式如何使用 Live Connect API 建立和讀取以下列語言編寫的 Outlook.com 使用者連絡人:

為了讓您的應用程式可以讀取使用者的連絡人,使用者必須授與 wl.basic 領域這個權限。若要在使用者的連絡人清單中新增連絡人,需要 wl.contacts_create 領域。如需從您應用程式要求所需領域的詳細資訊,請參閱取得使用者同意

為充分利用這個主題中的程式碼範例,您可以在使用程式碼範例所提供的大型程式碼參考範例內容中使用它們。

指定連絡人識別碼

這些程式碼範例中顯示的連絡人識別碼都是虛構的,因此將無法在您的應用程式中運作。您的應用程式中需要使用有效的連絡人識別碼。以下是一些取得連絡人識別碼以便用於路徑參數的範例:

  • 使用連絡人的連絡人識別碼。
  • me 指定為使用者識別碼,取得目前已登入使用者之連絡人和朋友的相關資訊,如下所示:
    • me/contacts,以取得所有已登入使用者的連絡人資訊。
    • me/friends,以取得所有已登入使用者的朋友資訊。

      附註  「朋友」是使用者邀請成為朋友並已接受朋友要求的其他 Outlook.com 使用者。朋友是 is_friend 結構設為 true 的連絡人(您無法以程式設計方式設定 is_friend 結構)。

  • 如果您有某人的使用者識別碼,請使用這個使用者識別碼取代這些範例中所示的 USER_ID 以取得他 (她) 連絡人和朋友的相關資訊:
    • USER_ID/contacts,以取得以 USER_ID 表示之使用者的所有連絡人項目資訊。
    • USER_ID/friends,以取得以 USER_ID 表示之使用者的所有朋友項目資訊。

您也可以使用連絡人識別碼引數,篩選從集合中傳回的結果。例如:

  • 在前述程式碼中使用 limit 參數指定要取得的項目數,以取得有限數目的連絡人或朋友項目。例如,若要取得已登入使用者的前兩個連絡人項目,請使用 me/contacts?limit=2
  • 在前述程式碼中將 offset 參數設為要取得的第一個項目索引,以指定第一個要取得的連絡人或朋友項目。例如,若要從第三個連絡人項目開始取得已登入使用者的兩個連絡人項目,請使用 me/contacts?limit=2&offset=3

    附註  在傳回的 JavaScript 物件標記法 (JSON) 格式物件中,您可以查看 paging 物件的 previousnext 結構,以取得上一個和下一個項目的 offsetlimit 參數值。

在適用於 Windows 市集應用程式的 JavaScript 與 HTML 中讀取和撰寫連絡人

在 JavaScript 中讀取連絡人

附註  這個程式碼範例在路徑引數中使用虛構的連絡人識別碼。您需要使用有效的連絡人識別碼來取代範例中的值


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 呼叫中使用虛構的連絡人識別碼。您需要使用有效的連絡人識別碼來取代範例中的值


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: 呼叫中使用虛構的連絡人識別碼。您需要使用有效的連絡人識別碼來取代範例中的值


-(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 字串中使用虛構的連絡人識別碼。您需要使用有效的連絡人識別碼來取代範例中的值


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


在前述的程式碼中,您可以將 me 變更為 USER_ID,其中 USER_ID 代表已登入使用者的使用者識別碼。

如需使用 POST 時您的應用程式必須提供之基本必要結構和選用結構的詳細資訊,請參閱 REST 參考中的<Contact 物件>一節。

附註  Live Connect API 無法讓您建立朋友項目。不過,您可以建立連絡人項目,然後使用 Outlook.com UI 邀請該連絡人成為朋友。

頁首

使用 REST 讀取和撰寫連絡人

使用 REST 讀取連絡人

附註  這個程式碼範例在路徑中使用虛構的連絡人識別碼。您需要使用有效的連絡人識別碼來取代範例中的值

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

頁首

 

 

顯示:
© 2014 Microsoft