В рамках проверки своей библиотеки и её расширения решил заняться интеграцией с Windows Live ID. Совсем недавно live не поддерживал OAuth, но время течёт и всё меняется. Теперь если вы рассчитываете привлечь на сайт аудиторию в том числе и c live-аккаунтами не затрудняя их очередной регистрацией, то возможно использовать OAuth для авторизации пользователя на своём сайте и получения данных о нём.
Ниже я приведу пример как это сделать с помощью библиотеки AOAuthNET для ASP.NET MVC сайта, для классического ASP.NET отличий будет немного.
Итак, метод контроллера, отрабатывающий по нажатию пользователя на кнопке войти
[HttpGet
]
public ActionResult live
()
{
OAuth2 live
= new OAuth2
("id приложения",
"секретный ключ",
"https://oauth.live.com/authorize",
"https://oauth.live.com/token",
"на эту страницу будет совершён редирект с передачей кода");
live
.GetAuthCode(new Dictionary
<string,
string>() { { "display",
"page" },
{ "scope",
"wl.basic" } });
return View
();
}
И теперь, собственно, код отвечающий за получения токена на странице, на которую перекинет пользователя с кодом для получения этого самого токена.
public ActionResult live
(string code
)
{
if (!string.IsNullOrEmpty(code
))
{
OAuth2 live
= new OAuth2
("id приложения",
"секретный ключ",
"https://oauth.live.com/authorize",
"https://oauth.live.com/token",
"на эту страницу будет совершён редирект с передачей кода");
live
.Code = code
;
OAuth2Token token
= live
.GetAccessToken(new Dictionary
<string,
string> { { "client_secret",
"секретный ключ" }}, OAuth2
.AccessTokenType.JsonDictionary);
if (token
!= null)
{
if (token
.dictionary_token != null)
{
Response
.Write(OAuth2UserData
.GetLiveUserData(token
.dictionary_token["access_token"]));
}
}
}
return View
();
}
Соответственно, я добавил метод GetLiveUserData, который получает информацию о пользователе (имя, фамилия и т.д.):
public static string GetLiveUserData
(string access_token
)
{
return GetUserData
(LIVE_ME_URL,
new Dictionary
<string,
string>() { {LIVE_ACCESS_TOKEN, access_token
} });
}
Всё просто, о методе GetUserData я писал ранее в первых частях цикла.
Пример работы библиотеки AOAuthNET с windows live id
Библиотека AOAuthNET и исходники
Предложения по расширению возможностей и функционалу приветствуются, так что пишите.