/// <summary> /// Аутентификация по полученному токену /// </summary> /// <returns></returns> public OAuthLoginResponse Login() { OAuthLoginResponse loginResponse = new OAuthLoginResponse(); string providerName = HttpContext.Current.Request.Params["providerName"]; OAuthProviderBase oAuthProvider = Providers.FirstOrDefault(provider => string.Equals(provider.ProviderName, providerName)); if (oAuthProvider == null) { loginResponse.Success = false; } else { NameValueCollection response = oAuthProvider.SendTokenRequest(); string token = response["access_token"]; if (string.IsNullOrEmpty(token)) { loginResponse.Success = false; } else { DateTime tokenExpires = GetTokenExpires(response); CookieUserData cookieUserData = oAuthProvider.GetUserData(token, out loginResponse.Account); User user = FindOrCreateUser(cookieUserData, out loginResponse.IsNewUser); cookieUserData.UserId = user.Id; CookieDataProvider.Login(user.Name, cookieUserData, tokenExpires); loginResponse.Success = true; } } return(loginResponse); }
/// <summary> /// Добавление OAuth-провайдера /// </summary> /// <param name="provider"></param> internal static void Add(OAuthProviderBase provider) { Providers.Add(provider); }