/// <summary> /// Logins the specified user name. /// </summary> /// <param name="userName">Name of the user.</param> /// <param name="password">The password.</param> public void Login(string userName, string password) { string authCode = null; TokenRequestData tokReqD = new TokenRequestData(); try { authCode = GetAuthCode(userName, password); if (string.IsNullOrEmpty(authCode)) { throw new WebException("Login denied."); } } catch (WebException ex) { CredentialsCorrect = false; return; } CredentialsCorrect = true; try { tokReqD.Code = authCode; tokReqD.Grant_Type = "authorization_code"; tokReqD.Redirect_Uri = urlRedirect; this.token = GetToken(tokReqD); } catch (WebException ex) { throw ex; } }
public static async Task OnTokenRequest(Microsoft.AspNetCore.Http.HttpContext e) { //Get preflight token string state = e.Request.Query["state"]; DbPreflightToken session = await Program.connection.GetPreflightTokenByTokenAsync(state); if (session == null) { await Program.QuickWriteToDoc(e, "Failed to sign in, you might have taken too long.", "text/plain", 400); //TODO: REDIRECT BACK TO LOGIN return; } //Verify if (!session.auth) { await Program.QuickWriteToDoc(e, "Token is not yet valid.", "text/plain", 400); return; } //Create output data TokenResponseData d = new TokenResponseData { token = session.final_token, next = session.next, nonce = session.nonce }; await Program.QuickWriteJsonToDoc(e, d); }
void SetToken(string json) { Debug.Log("SetToken with " + json); TokenResponseData tokenResponseData = JsonConvert.DeserializeObject <TokenResponseData>(json); //Debug.Log("setting token - " + json); if (tokenResponseData.status == "ok") { Token = tokenResponseData.token; _playerID = tokenResponseData.player_id; } else { HTTPAlert.Present("Error", "Login failed", null, null, true); } }
/// <summary> /// Logins the specified reference tok. /// </summary> /// <param name="refTok">The reference tok.</param> public void Login(string refTok) { TokenRequestData reqD = new TokenRequestData(); try { reqD.Refresh_Token = refTok; reqD.Grant_Type = "refresh_token"; this.token = GetToken(reqD); CredentialsCorrect = true; } catch (WebException ex) { CredentialsCorrect = false; return; } }
public void reNewToken(Action <Result> callBack, Action <Result> errCallBack) { Dictionary <string, string> body = new Dictionary <string, string>(); body.Add("access_cup", CupBuild.getCupSn()); HTTPRequest hTTPRequest = new HTTPRequest(new Uri(mUrlProvider.getCupTokenUrl(CupBuild.getCupSn())), HTTPMethods.Post, (request, response) => { Debug.LogFormat("--------AuthenticationUtils.reNewToken.GotResponse--------"); Debug.LogFormat("response.IsSuccess: {0}", response.IsSuccess); Debug.LogFormat("response.DataAsText: {0}", response.DataAsText); Debug.LogFormat("response.Message: {0}", response.Message); Debug.LogFormat("request.State: {0}", request.State); if (response.IsSuccess) { TokenResponseData mTokenResponseData = mJsonUtils.String2Json <TokenResponseData>(response.DataAsText); string token = mTokenResponseData.token; mLocalCupAgent.saveCupToken(CupBuild.getCupSn(), token); if (callBack != null) { callBack(Result.Success(token)); } } else { if (errCallBack != null) { errCallBack(Result.Error()); } } }); string strBody = mJsonUtils.DicToJsonStr(body); hTTPRequest.RawData = Encoding.UTF8.GetBytes(strBody); hTTPRequest.AddHeader("Gululu-Agent", mGululuNetworkHelper.GetAgent()); hTTPRequest.AddHeader("udid", mGululuNetworkHelper.GetUdid()); hTTPRequest.AddHeader("Accept-Language", mGululuNetworkHelper.GetAcceptLang()); hTTPRequest.SetHeader("Content-Type", "application/json"); hTTPRequest.Send(); }
private async Task <Boolean> refreshToken(User user) { using (var httpClient = new HttpClient()) { var clientId = WebConfigurationManager.AppSettings["clientId"]; var clientSecret = WebConfigurationManager.AppSettings["clientSecret"]; var redirectUri = WebConfigurationManager.AppSettings["redirectUri"]; var grantType = "refresh_token"; var requestData = new List <KeyValuePair <string, string> >(); httpClient.BaseAddress = new Uri("https://login.microsoftonline.com/"); requestData.Add(new KeyValuePair <string, string>("client_id", clientId)); requestData.Add(new KeyValuePair <string, string>("refresh_token", user.RefreshToken)); requestData.Add(new KeyValuePair <string, string>("client_secret", clientSecret)); requestData.Add(new KeyValuePair <string, string>("redirect_uri", redirectUri)); requestData.Add(new KeyValuePair <string, string>("grant_type", grantType)); requestData.Add(new KeyValuePair <string, string>("scope", user.Scope)); var request = new HttpRequestMessage(HttpMethod.Post, "common/oauth2/v2.0/token"); request.Content = new FormUrlEncodedContent(requestData); var response = await httpClient.SendAsync(request); if (response.IsSuccessStatusCode) { TokenResponseData responseData = await response.Content.ReadAsAsync <TokenResponseData>(); var dbContext = new DbHelper(); dbContext.UpdateTokens(responseData.refresh_token, responseData.access_token, user.Id); return(true); } else { return(false); } } }
/// <summary> /// Gets the token. /// </summary> /// <param name="reqData">The req data.</param> /// <returns></returns> private TokenResponseData GetToken(TokenRequestData reqData) { HttpWebRequest req = default(HttpWebRequest); WebResponse res = default(HttpWebResponse); TokenResponseData resData = default(TokenResponseData); var postDataJson = JsonConvert.SerializeObject(reqData); var postData = Encoding.UTF8.GetBytes(postDataJson); req = WebRequest.CreateHttp(urlToken); req.Method = "POST"; req.Headers.Add("authorization", "Basic MzU5MDM1ODY6Tm9TZWNyZXQ="); req.Headers.Add("origin", "https://home.innogy-smarthome.de"); req.Headers.Add("Referer", "https://home.innogy-smarthome.de/"); req.Headers.Add("Accept", "*/*"); req.Headers.Add("Accept-Language", "de,en-US;q=0.7,en;q=0.3"); req.Headers.Add("Accept-Encoding", "gzip, deflate, br"); req.Headers.Add("content-type", "application/json"); req.Headers.Add("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:62.0) Gecko/20100101 Firefox/62.0"); req.Headers.Remove("Cache-Control"); req.AllowAutoRedirect = false; using (reqStream = req.GetRequestStream()) { reqStream.Write(postData, 0, postData.Length); } res = req.GetResponse(); using (StreamReader reader = new StreamReader(res.GetResponseStream())) { resData = JsonConvert.DeserializeObject <TokenResponseData>(reader.ReadToEnd()); } return(resData); }
public async Task <HttpResponseMessage> GetAccessToken(string code, string email) { using (var httpClient = new HttpClient()) { var clientId = WebConfigurationManager.AppSettings["clientId"]; var clientSecret = WebConfigurationManager.AppSettings["clientSecret"]; var redirectUri = WebConfigurationManager.AppSettings["redirectUri"]; var grantType = "authorization_code"; var requestData = new List <KeyValuePair <string, string> >(); httpClient.BaseAddress = new Uri("https://login.microsoftonline.com/"); requestData.Add(new KeyValuePair <string, string>("client_id", clientId)); requestData.Add(new KeyValuePair <string, string>("code", code)); requestData.Add(new KeyValuePair <string, string>("client_secret", clientSecret)); requestData.Add(new KeyValuePair <string, string>("redirect_uri", redirectUri)); requestData.Add(new KeyValuePair <string, string>("grant_type", grantType)); var request = new HttpRequestMessage(HttpMethod.Post, "common/oauth2/v2.0/token"); request.Content = new FormUrlEncodedContent(requestData); var response = await httpClient.SendAsync(request); if (response.IsSuccessStatusCode) { TokenResponseData responseData = await response.Content.ReadAsAsync <TokenResponseData>(); var dbContext = new DbHelper(); User user = null; var status = true; //save token details in DB. user = dbContext.UpdateUser(email, responseData.access_token, responseData.refresh_token, responseData.scope); //check user has already subscribed for notification. //if yes, renew his subscription. Otherwise create new subscription. if (user.SubscriptionId == null || user.SubscriptionId.Trim().Length < 1) { status = await CreateSubscription(responseData.access_token, email); } else { status = await RenewSubscription(user); } if (status) { return(Request.CreateResponse(HttpStatusCode.OK)); } else { return(Request.CreateResponse(HttpStatusCode.NotFound)); } } else { return(Request.CreateResponse(response.StatusCode)); } } }