获取电子邮件哈希时出现 Windows Live Contacts API 错误 - JavaScript

标签 windows api contacts msn import-contacts

Window Live Contacts API 的以下代码可从中获取所有电子邮件地址。它在登录、注销和其他身份验证方面工作正常。我可以使用 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>

最佳答案

我遇到了同样的问题,我找到了解决方案,您需要做的就是将以下范围添加到您请求的范围列表中:“wl.contacts_emails”

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

之后,我不得不从我的配置文件中删除我的应用程序以重置所有范围并再次添加我的应用程序。 (但如果您不想询问所有已经使用过您的应用的人,我可以重置 secret token 以强制用户再次添加您的应用)。

关于获取电子邮件哈希时出现 Windows Live Contacts API 错误 - JavaScript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6538982/

相关文章:

c - Windows 上的 %lld 问题

c++ - 奇怪的 GetTickCount 问题

python - 用于查找域的 pagerank 的脚本

Android 2.0 如何获取联系人组中的显示名称和号码

对某些项目进行 Javascript 验证

windows - Node.js 0.5.x 的递归目录创建

windows - Lua for windows https 错误 : "%1 is not a valid Win32 application"

javascript - 具有 REST API 架构的单页应用程序

javascript - Google + YouTube JS API 阻止框架访问跨源框架

Android 联系人选择器 list