Так что я новичок в ASP.NET MVC и Windows Live Connect API. В основном я пытаюсь интегрировать Live-вход на свой сайт.Когда пользователи входят в систему, Live запрашивает их разрешение на предоставление моему приложению определенной информации, отправляет пользователя на URI перенаправления, указанный в настройках моего приложения, к которому добавляется строка запроса. Здесь, если пользователь входит на сайт в первый раз, я хочу, чтобы его основная информация хранилась на моем сервере (имя, фамилия, адрес электронной почты). Мне удалось узнать их имя и фамилию, но мне трудно узнать, как получить их основной адрес электронной почты. Я объясню, что я сделал до сих пор.
Я не смог найти лучший способ интегрировать Live connect в приложение 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();
Приведенный выше вызов GET предоставляет мне следующую строку 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 мне нужен для получения электронной почты?
И правильно ли я это делаю?