2011-06-30 15 views
1

すべての電子メールアドレスを取得するためのWindow Live Contacts API用の次のコード。ログイン、ログアウト、およびその他の認証でうまく動作します。 Get Data関数呼び出しでログインしたユーザーのすべてのユーザー情報を収集できますが、ユーザーの電子メールハッシュを取得しています。残りの電子メールハッシュは空白です。私は私のコンタクトブックに10の電子メールアドレスを持っています。電子メールハッシュ取得時のWindows Live Contacts APIエラー - JavaScript

この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> 

答えて

0

マイクロソフトでは、APIを使用して連絡先電子メールを取得することはできません。彼らはあなたの最後の電子メールと一致する電子メールハッシュのみを発行します。

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

私は今5日間ホットメールの連絡先を取得しようとしており、私はそれを把握することはできません。

+1

twitterはどのようにメールIDを取得していますか? – coderex

+0

-1これは正しくありません。 @Thierryが指摘したように、正しいパーミッションを要求していない場合、APIはハッシュを表示します。 –

6

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

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

をすることを行った後私はすべてのスコープをリセットし、私のアプリケーションをもう一度追加するために自分のプロファイルから自分のアプリケーションを削除しなければならなかった。 (しかし、あなたがあなたのアプリを使用するすべての人に尋ねることを望まないなら、私は秘密のトークンをリセットして、ユーザーにあなたのアプリを再び追加させることができます)。

+0

私の時間を保存していただきありがとうございます! – Maximus

関連する問題