Ошибка API контактов Windows Live при получении хэшей электронной почты - JavaScript - PullRequest
1 голос
/ 30 июня 2011

Следующие коды API Window Live Contacts для получения всех адресов электронной почты. Он прекрасно работает при входе, выходе и других аутентификациях. Я могу собрать всю информацию о пользователях, вошедших в систему, с помощью вызова функции Get Data, но я получаю хэши электронной почты пользователей, остальные хэши электронной почты пусты. У меня есть 10 адресов электронной почты в моей контактной книге.

Как мне получить адреса электронной почты моих контактов, используя этот API?

<html>
    <head>
        <script src="https://js.live.net/v5.0/wl.js" type="text/javascript"></script>
    </head>
    <body>

    <a href='javascript:void(0);' onclick='signUserIn();'>signUserIn</a> <br>
    <a href='javascript:void(0);' onclick='signUserOut()'>signUserOut</a><br>

    <a href='javascript:void(0);' onclick='loginStatus()'>Check User Status</a>

    <a href='javascript:void(0);' onclick='getData()'>Get Data</a>

    <script type="text/javascript" >

        WL.init({
            client_id: '0000000044444444',
            redirect_uri: 'http://domain.com/contact.php',
            response_type: "token",
            logging: true
        });

        var scopesArr = ['wl.signin', 'wl.basic', 'wl.emails'];

        function signUserIn() {
            WL.login({ scope: scopesArr });

        }

        function loginStatus() {
            WL.getLoginStatus(function(response) { 
            alert("response " + response );

            });
        }

        function getData() {
            alert( "getData");

            WL.api(
                {
                    path: "me/contacts",
                    method: "GET",
                    scope: scopesArr
                },
                    function (result) {

                        if (!result.error) {
                            var resultData = result.data;

                            var emailHashes = new Array;                    
                            for (i = 0; i < resultData.length; i++) {

                                for (j = 0; j < resultData[i].email_hashes.length; j++) {
                                    alert( "resultData " + resultData[i].email_hashes[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("emailHashes").setAttribute("rows", emailHashes.length);
                            document.getElementById("lists").value = resultText;
                        }
                        else {
                            alert("Error getting contacts: " + result.error.message);
                        }
            });

        }

        function signUserOut() {
            WL.logout();
        }

    </script>

    <textarea rows="10" cols="100" id="lists"></textarea>
    </body>
</html>

Ответы [ 2 ]

6 голосов
/ 14 марта 2013

У меня была та же проблема, и я нашел решение, все, что вам нужно сделать, это добавить следующую область в список областей, которые вы запрашиваете: "wl.contacts_emails"

WL.login({scopes: ["wl.contacts_emails"]});

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

0 голосов
/ 01 июля 2011

Microsoft не позволяет вам получать ваши контакты по электронной почте через API. Они выдают только электронные хэши, используемые для соответствия электронных писем на вашем конце.

Извините, что сломал его вам, но вам не повезло.

Я потратил 5 дней, пытаясь получить контакты в Hotmail, и не могу понять.

...