// GET: /<controller>/ public IActionResult Index() { try { if (!HttpContext.Session.Keys.Contains("VkAccessToken") || !HttpContext.Session.Keys.Contains("VkUserId")) { return(RedirectToAction("AuthorizationFail", "Status")); } string accessToken = HttpContext.Session.GetString("VkAccessToken"); string userId = HttpContext.Session.GetString("VkUserId"); dynamic userInfoResponse = RESTRequest.PostAsUrlEncodedWithJsonResponse("https://api.vk.com/method/users.get", new Dictionary <string, string>() { { "access_token", accessToken }, { "v", "5.59" }, { "user_ids", userId }, { "fields", "sex, bdate, photo_100" }, { "name_case", "nom" } }); logger.LogWarning("User info recieved"); VkUserInfo userInfo = new VkUserInfo() { Id = userInfoResponse.response[0].id.ToString(), Name = userInfoResponse.response[0].first_name, Surname = userInfoResponse.response[0].last_name, Sex = userInfoResponse.response[0].sex == 1 ? "Female" : "Male", BirthDate = userInfoResponse.response[0].bdate, PhotoUrl = userInfoResponse.response[0].photo_100 }; return(View("VkUserInfoPage", userInfo)); } catch (Exception e) { logger.LogError(new EventId(), e, "Error"); return(RedirectToAction("Exception", "Status", new { exception = JsonConvert.SerializeObject(e) })); } }
private void Login(VkUserInfo vkUserInfo) { try { var loginElem = _webDriver.FindElement(By.Id("index_email")); CommonSendKeys(loginElem, vkUserInfo.Login); var passElem = _webDriver.FindElement(By.Id("index_pass")); CommonSendKeys(passElem, vkUserInfo.Pass); var indexLoginElem = _webDriver.FindElement(By.Id("index_login_button")); indexLoginElem.Click(); } catch (NoSuchElementException ex) { } catch (ElementNotVisibleException ex) { } catch (WebDriverException ex) { ClickToBoxLayerWrapButton(); Login(vkUserInfo); } }
private bool InitVkuser(ExternalLoginInfo loginInfo, string userId) { //bool result = false; vkUserInfo = new VkUserInfo(); var response = vkUserInfo.InitializeUserProfileInfo(loginInfo); profile = new UserProfile { GivenName = response.FirstName, FamilyName = response.LastName, ExternalPic = response.Picture, UserId = userId, }; //if (Create(profile) != null) //{ // result = true; //} return(Create(profile) != null ? true : false); //return result; }
/// <summary> /// Авторизация пользователя через VK /// </summary> /// <param name="code"></param> /// <returns></returns> public ActionResult LogIn_vk(string code) { string _BaseUrl = $"https://{Settings.BaseURL}/user/LogIn_vk"; string Result = String.Empty; if (String.IsNullOrEmpty(code)) { // отправляем запрос на авторизацию string GetCode_Url = $"https://oauth.vk.com/authorize?client_id={Settings.vkApp}" + $"&display=popup&redirect_uri={_BaseUrl}&scope=email&response_type=code&v=5.69"; Response.Redirect(GetCode_Url); } else { char[] _pass = (DateTime.Now.ToString("DDssmmMMyyyy")).ToCharArray(); Cripto password = new Cripto(_pass); UsersModel UserInfoVK = new UsersModel() { Id = Guid.NewGuid(), Disabled = false, Salt = password.Salt, Hash = password.Hash }; // Получаем ID пользователя и токин string GetTokin_Url = $"https://oauth.vk.com/access_token?client_id={Settings.vkApp}" + $"&client_secret={Settings.vkAppKey}&redirect_uri={_BaseUrl}&code={code}"; WebClient client = new WebClient() { Encoding = Encoding.UTF8 }; string json = client.DownloadString(GetTokin_Url); VkLoginModel vkEnterUser = JsonConvert.DeserializeObject <VkLoginModel>(json); UserInfoVK.Vk = vkEnterUser.user_id.ToString(); string currentUser = User.Identity.Name; if (String.IsNullOrEmpty(currentUser)) { Result = "<div>" + json + "</div>"; // Получаем данные пользователя string GetUserInfo_Url = $"https://api.vk.com/method/users.get" + $"?user_id={vkEnterUser.user_id}&access_token={vkEnterUser.access_token}" + $"&fields=domain,nickname,country,city,contacts&v=5.69"; client = new WebClient() { Encoding = Encoding.UTF8 }; VkUserInfo vkUser = JsonConvert.DeserializeObject <VkUserInfo>(json); var userResponse = vkUser.response[0]; UsersModel UserInfo = _repository.getCustomer(userResponse.id.ToString()); // Если пользователь найден if (UserInfo != null) { // Записываем данные об авторизации пользователя _accountRepository.SuccessLogin(UserInfo.Id, RequestUserInfo.IP); // Удачная попытка, Авторизация FormsAuthentication.SetAuthCookie(UserInfo.Id.ToString(), false); MergeOrders(UserInfo); } else { UserInfoVK.FIO = $"{userResponse.last_name} {userResponse.first_name}"; UserInfoVK.Phone = ""; UserInfoVK.EMail = ""; UserInfoVK.Address = userResponse.city.title; _repository.createCustomer(UserInfoVK); // Удачная попытка, Авторизация FormsAuthentication.SetAuthCookie(UserInfoVK.Id.ToString(), false); //MergeOrders(UserInfoVK); } } else { if (!String.IsNullOrWhiteSpace(UserInfoVK.Vk)) { var existingVkUser = _repository.getCustomer(UserInfoVK.Vk); var authorizedUser = _repository.getCustomer(Guid.Parse(currentUser)); if (existingVkUser != null && (existingVkUser.Id != authorizedUser.Id)) { UsersMergeViewModel mergeModel = new UsersMergeViewModel { Users = new UsersModel[] { authorizedUser, existingVkUser } }; return(View("MergeUsers", mergeModel)); } else { UsersModel user = _repository.SetCustromerSocialNetwork(Guid.Parse(currentUser), "vk", UserInfoVK.Vk); } return(RedirectToAction("Index", "User")); } } } return(View(model)); }