그래서 저는 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 호출이 이메일을 검색해야합니까?
또한 올바른 방법을 사용하고 있습니까?
동일한 요청으로 사용자의 다른 모든 데이터를 검색해야하는 것과 같은 호출에서 이메일 주소를받지 못하는 이유는 무엇입니까? – cpoDesign
그게 내가 원하는거야,하지만 그 전화가 어떻게 보일지 모르겠다. 필요로하는 모든 정보를 얻거나 사용자의 전자 메일 주소가 포함될 정보에 대한 별도의 요청을해야하는 경우 단일 요청이 있는지 여부를 모르겠습니다. – Danny
Danny, 그곳에 계신 것 같습니다 :이 링크를 확인해보십시오. http://msdn.microsoft.com/en-us/library/live/hh243646.aspx#wlemails – cpoDesign