Rechercher dans la liste de contacts d’un utilisateur des personnes inscrites sur votre site

Récupérez votre compte ici

Cette rubrique décrit comment votre site Web peut déterminer si les contacts d’un utilisateur visiteur sont également des utilisateurs inscrits sur votre site Web.

Quand un utilisateur disposant d’un compte Microsoft visite votre site Web, vous pouvez déterminer si des contacts du visiteur sont également des utilisateurs inscrits de votre site Web. Vous utilisez pour cela une combinaison de code côté serveur et de code JavaScript côté client.

Pour savoir si l’un des contacts d’un utilisateur est inscrit sur votre site, procédez comme suit :

Une fois que vous avez la liste des hachages qui représentent les adresses de messagerie de vos utilisateurs inscrits et la liste des hachages des adresses de messagerie des contacts de l’utilisateur, vous pouvez les comparer afin de trouver des correspondances.

Pour tirer pleinement parti des exemples de code JavaScript, C#, Objective-C et Java de cette rubrique, vous pouvez les utiliser dans le contexte d’exemples de référence de code plus vastes que nous fournissons dans Utilisation des exemples de code.

Générer un jeu de hachages d’adresses de messagerie

Générez un hachage qui correspond à l’adresse de messagerie de chaque utilisateur inscrit de votre site Web. Vous devez générer chaque hachage en effectuant les étapes suivantes :

  1. Éliminez les espaces de début et de fin de l’adresse de messagerie, par exemple : Someone@Example.org.
  2. Éliminez les espaces de début et de fin de l’ID de client de l’application effectuant la demande, par exemple : 0000000603DB0F.
  3. Concaténez les résultats des étapes 1 et 2, par exemple : Someone@Example.org0000000603DB0F.
  4. Convertissez le résultat de l’étape 3 en minuscules, par exemple : someone@example.org0000000603db0f.
  5. Convertissez le résultat de l’étape 4 en binaire à l’aide du codage UTF8.
  6. Calculez la valeur SHA-256 de l’étape 5 et convertissez la valeur en son équivalent hexadécimal, par exemple : 6A9F...63A4. (Une partie de la valeur est omise dans un souci de concision.)
  7. Convertissez le résultat de l’étape 6 en minuscules, par exemple : 6a9f...63a4. Le résultat de cette étape vous donne le hachage d’adresse de messagerie.

Haut

Obtenir une liste de hachages d’adresses de messagerie avec le code côté client

Vous pouvez obtenir la liste des adresses de messagerie des contacts d’un utilisateur en exécutant du code de ce type.

Obtenir une liste de hachages d’adresses de messagerie en 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;
        }
    );
}


Obtenir une liste de hachages d’adresses de messagerie en C# pour applications du Windows Store et applications 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;
    }
}


[]

Obtenir une liste de hachages d’adresses de messagerie en Objective-C pour 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];
        }
    }
}


Obtenir une liste de hachages d’adresses de messagerie en Java pour 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);                    
               }
        }
    );
}


Haut

Obtenir une liste de hachages d’adresses de messagerie avec le code côté serveur

Si un utilisateur se connecte et consent à une demande d’étendue wl.basic, et que vous disposez d’un jeton d’accès qui correspond à cette demande, vous pouvez récupérer une liste des contacts de l’utilisateur. Pour chaque adresse de messagerie disponible pour un contact donné, un hachage d’adresse de messagerie est affiché. Vous pouvez extraire le hachage d’adresse de messagerie à l’aide du langage et de la plateforme de codage de votre choix. Pour obtenir la liste des hachages d’adresse de messagerie, procédez à un appel HTTP GET côté serveur avec REST et les paramètres de demande suivants.

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

Dans l’exemple de code REST précédent, remplacez ACCESS_TOKEN par votre chaîne de jeton d’accès.

La collection de réponses au format JSON (JavaScript Object Notation) ressemble à ce qui suit. (Les points de suspension sont affichés à la place d’informations omises dans un souci de concision.)

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

Pour plus d’informations sur les appels HTTP côté serveur avec REST, voir Scénarios côté serveur.

Haut

 

 

Afficher:
© 2014 Microsoft