2012-03-19 3 views
6

그래서 저는 ASP.NET MVC 및 Windows Live Connect API를 처음 사용합니다. 기본적으로 라이브 로그인을 내 웹 사이트에 통합하려고합니다. 사용자가 로그인하면 Live가 내 앱에 특정 정보를 제공 할 수있는 권한을 요청하고 사용자에게 쿼리 문자열이 추가 된 내 앱 설정에 지정된 리디렉션 URI로 사용자를 보냅니다. 사용자가 사이트에 처음으로 로그인하는 경우 여기에 기본 정보가 내 서버에 저장됩니다 (이름, 성, 전자 메일). 나는 성과 이름을 얻을 수 있었지만, 기본 이메일 주소를 검색하는 방법을 찾는 데 어려움을 겪고 있습니다. 나는 지금까지 한 일을 설명 할 것이다.ASP.NET의 라이브 연결 API를 사용하여 사용자의 전자 메일 주소 검색

라이브 연결을 MVC 응용 프로그램에 통합하는 가장 좋은 방법을 찾지 못해서 가장 잘 추측했습니다. 리디렉션 uri에 쿼리 동작 "코드"를 사용하여 HTTP 게시를 구성하는 컨트롤러 작업을 지정했습니다.

HttpRequest req = System.Web.HttpContext.Current.Request; 

      string myAuthCode = req.QueryString["code"]; 
      string myAppId = ConfigurationManager.AppSettings.Get("wll_appid"); 
      string mySecret = ConfigurationManager.AppSettings.Get("wll_secret"); 
      string postData = "client_id=" + myAppId + "&redirect_uri=http%3A%2F%2Fmscontestplatformtest.com%2FContestPlatform%2FUser%2FSignIn&client_secret=" + mySecret + "&code=" + myAuthCode + "&grant_type=authorization_code"; 

      byte[] byteArray = Encoding.UTF8.GetBytes(postData); 

      WebRequest request = WebRequest.Create("https://oauth.live.com/token"); 
      request.ContentType = "application/x-www-form-urlencoded"; 
      request.ContentLength = byteArray.Length; 
      request.Method = "POST"; 

JSON 형식 문자열 응답을 가져 와서 access_token을 추출하십시오. 그런 다음이 액세스 토큰을 사용하여 HTTP GET 호출을 다음과 같이 구성합니다.

request = WebRequest.Create("https://apis.live.net/v5.0/me?access_token=" + r.access_token); 
      response = request.GetResponse(); 
      reader = new StreamReader(response.GetResponseStream()); 

      string userInfo = reader.ReadToEnd(); 

가져 오기 호출은 위의이 JSON 문자열로 날을 제공

모든 공공 정보이며 대단한
{ 
    "id": "02b4b930697bbea1", 
    "name": "Daniel Hines", 
    "first_name": "Daniel", 
    "last_name": "Hines", 
    "link": "http://profile.live.com/cid-02b4b930697bbea1/", 
    "gender": "male", 
    "locale": "en_US", 
    "updated_time": "2011-10-14T21:40:38+0000" 
} 

, 나는 자신의 기본 이메일 주소를 제외하고 필요한 거의 모든 것을 갖추고 있습니다. 어떤 종류의 GET 호출이 이메일을 검색해야합니까?

또한 올바른 방법을 사용하고 있습니까?

+0

동일한 요청으로 사용자의 다른 모든 데이터를 검색해야하는 것과 같은 호출에서 이메일 주소를받지 못하는 이유는 무엇입니까? – cpoDesign

+0

그게 내가 원하는거야,하지만 그 전화가 어떻게 보일지 모르겠다. 필요로하는 모든 정보를 얻거나 사용자의 전자 메일 주소가 포함될 정보에 대한 별도의 요청을해야하는 경우 단일 요청이 있는지 여부를 모르겠습니다. – Danny

+0

Danny, 그곳에 계신 것 같습니다 :이 링크를 확인해보십시오. http://msdn.microsoft.com/en-us/library/live/hh243646.aspx#wlemails – cpoDesign

답변

5

좋습니다. 알아 냈습니다.

"wl.emails"범위를 내 로그인 링크에 추가하기 만하면됩니다. 그러면 내 GET 통화에서 이메일 주소가 반환됩니다.

+2

로그인 링크의 샘플 코드를 제공 할 수 있습니까? – wloescher

관련 문제