Поиск людей, зарегистрированных на вашем сайте, в списке контактов пользователя

Восстановите свою учетную запись здесь

В этом разделе описано, как определить, являются ли контакты посетителя зарегистрированными пользователями вашего сайта.

Если на ваш сайт заходит пользователь с учетной записью Майкрософт, вы можете определить, являются ли контакты этого посетителя зарегистрированными пользователями вашего сайта. Это можно сделать с помощью комбинации кода JavaScript клиента и кода сервера.

Чтобы узнать, зарегистрирован ли кто-нибудь из контактов пользователя на вашем сайте, выполните следующие действия.

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

Чтобы извлечь максимальную пользу из образцов кода на JavaScript, C#, Objective-C и Java, приведенных в этом разделе, вы можете использовать их в контексте расширенных образцов кода, приведенных в разделе Работа с образцами кода.

Создание набора хэшей адресов электронной почты

Создайте хэш для адреса электронной почты каждого зарегистрированного пользователя сайта. Для создания каждого хэша выполните следующие действия.

  1. Удалите конечные и начальные пробелы из адреса электронной почты, например: Someone@Example.org.
  2. Удалите конечные и начальные пробелы из идентификатора клиента запрашивающего приложения, например: 0000000603DB0F.
  3. Соедините результаты шагов 1 и 2, например: Someone@Example.org0000000603DB0F.
  4. Переведите результат шага 3 в нижний регистр, например: someone@example.org0000000603db0f.
  5. Переведите результат шага 4 в двоичные данные с помощью кодировки UTF-8.
  6. Вычислите значение SHA-256 для шага 5 и переведите его в шестнадцатеричный эквивалент, например: 6A9F...63A4. (Часть значения опущена для краткости).
  7. Переведите результат шага 6 в нижний регистр, например: 6a9f...63a4. Полученный в этом шаге результат и есть хэш адреса электронной почты.

В начало раздела

Получение списка хэшей электронных адресов с помощью кода на стороне клиента

Вы можете получить список адресов электронной почты контактов пользователя с помощью следующего кода.

Получение списка хэшей электронных адресов на JavaScript


function friendFinder_onClick() {
    WL.login({
        scope: "wl.basic"
    }).then(
        function (response) {
            WL.api({
                path: "me/contacts",
                method: "GET"
            }).then(
                function (response) {
                    var resultData = response.data;
                    var emailHashes = new Array;
                    for (i = 0; i < resultData.length; i++) {
                        for (j = 0; j < resultData[i].email_hashes.length; j++) {
                            emailHashes[emailHashes.length] = resultData[i].email_hashes[j];
                        }
                    }
                    var resultText = "";
                    for (k = 0; k < emailHashes.length; k++) {
                        resultText += emailHashes[k] + "\r\n";
                    }
                    document.getElementById("infoArea").setAttribute("rows", emailHashes.length);
                    document.getElementById("infoArea").value = resultText;
                },
                function (responseFailed) {
                    document.getElementById("infoArea").value =
                        "Error calling API: " + responseFailed.error.message;
                }
            );
        },
        function (responseFailed) {
            document.getElementById("infoArea").innerText =
                "Error signing in: " + responseFailed.error_description;
        }
    );
}


Получение списка хэшей электронных адресов на C# в приложениях Магазина Windows и Windows Phone


private async void btnGetEmailHashes_Click(object sender, RoutedEventArgs e)
{
    try
    {
        LiveConnectClient liveClient = new LiveConnectClient(this.session);
        LiveOperationResult operationResult = await liveClient.GetAsync("me");
        dynamic result = operationResult.Result;
        string message = "";
        List<object> data = null;
        IDictionary<string, object> contact = null;
        List<object> emailHashes = null;
        if (result.ContainsKey("data"))
        {
            data = (List<object>)result["data"];
            for (int i = 0; i < data.Count; i++)
            {
                contact = (IDictionary<string, object>)data[i];
                if (contact.ContainsKey("email_hashes"))
                {
                    emailHashes = (List<object>)contact["email_hashes"];
                    for (int j = 0; j < emailHashes.Count; j++)
                    {
                        message += emailHashes[j].ToString() + "\r\n";
                    }
                }
            }
        }
        infoTextBlock.Text = message;
    }
    catch (LiveConnectException exception)
    {
        this.infoTextBlock.Text = "Error getting email hashes: " + exception.Message;
    }
}


[]

Получение списка хэшей электронных адресов на Objective-C для iOS


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

- (void) liveOperationSucceeded:(NSDictionary *)result
{
    NSArray *contacts = [result objectForKey:@"data"];
    for (NSDictionary *contact in contacts) 
    {
        NSArray *emailHashes = [contact objectForKey:@"email_hashes"];
        for (NSString *emailHash in emailHashes)
        {
            self.displayLabel.text = [NSString stringWithFormat:@"%@,\n %@", self.displayLabel.text, emailHash];
        }
    }
}


Получение списка хэшей электронных адресов на Java для Android


public void friendFinder() {
    final LiveOperationListener opListener = new LiveOperationListener() {
        public void onError(LiveOperationException exception, LiveOperation operation) {
               resultTextView.setText(exception.getMessage());
           }
        public void onComplete(LiveOperation operation) {
            JSONObject result = operation.getResult();
               try {
                   JSONArray contacts = result.optJSONArray("data");
                   List<String> emailHashes = new ArrayList<String>();
                   for (int i = 0; i < contacts.length(); i++) {
                      JSONObject contact = contacts.getJSONObject(i);
                      JSONArray contactEmailHashes = contact.getJSONArray("email_hashes");
                      if (contactEmailHashes != null) {
                          for (int j = 0; j < contactEmailHashes.length(); j++) {
                              emailHashes.add(contactEmailHashes.optString(j));
                          }
                      }
                  }
                  String resultText = "Email hashes:\n";
                  for (int k = 0; k < emailHashes.size(); k++) {
                      resultText += emailHashes.get(k) + "\n";
                  }
                  resultTextView.setText(resultText);
               }
               catch(JSONException ex) {
                   resultTextView.setText("Error getting email hashes: " + ex.getMessage());
               }
        }
       };
    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("me/contacts", opListener);                    
               }
        }
    );
}


В начало раздела

Получение списка хэшей адресов электронной почты с помощью кода на стороне сервера

Если пользователь выполняет вход и дает согласие на запрос области wl.basic, а у вас есть маркер доступа для этого запроса, вы можете получить список контактов пользователя. Хэш адреса электронной почты отображается для каждого адреса электронной почты контакта. Вы можете извлечь хэш адреса электронной почты с помощью предпочтительных языка программирования и платформы. Чтобы получить список хэшей адресов электронной почты, сделайте HTTP-вызов  GET на стороне сервера, используя REST и следующие параметры запроса.

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

В предыдущем примере кода REST замените ACCESS_TOKEN строкой для своего маркера доступа.

Ответ в формате нотации объектов JavaScript (JSON) будет выглядеть примерно так. (Многоточия замещают опущенную для краткости информацию).

{
   "data": [
      {
         "id": "contact.b4466224b2ca42798c3d4ea90c75aa56", 
         "first_name": "Henrik", 
         "last_name": "Jensen", 
         ...
         "email_hashes": [
            "9ecdb19f4eb8e04304c5d1280368c42e85b6e4fe39f08b0c837ec592b905a620", 
            "fc05492f50da6488aa14dcf221d395bcb29a4e43b43b250d60c68df4f831cad3"
         ], 
         ...
      }, {
         ...
      }
   ]
}

Дополнительные сведения о том, как делать HTTP-вызовы на стороне сервера с помощью REST, см. в разделе Сценарии на стороне сервера.

В начало раздела

 

 

Показ:
© 2015 Microsoft