1

すべての電子メール アドレスを取得する 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>
4

2 に答える 2

6

私は同じ問題を抱えていましたが、解決策を見つけました。必要なのは、要求しているスコープのリストに次のスコープを追加することだけです:「wl.contacts_emails」

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

その後、プロファイルからアプリケーションを削除して、すべてのスコープをリセットし、もう一度アプリケーションを追加する必要がありました。(ただし、既にアプリを使用しているすべての人に尋ねたくない場合は、シークレット トークンをリセットして、ユーザーにアプリを再度追加するように強制できます)。

于 2013-03-14T16:04:34.430 に答える
0

Microsoftでは、APIを介して連絡先の電子メールを取得することは許可されていません。彼らはあなたの側の電子メールと一致するために使用される電子メールハッシュのみを発行します。

あなたにそれを壊して申し訳ありませんが、あなたは運が悪いです。

Hotmailの連絡先を取得するために5日間を費やしましたが、理解できません。

于 2011-07-01T02:35:19.410 に答える