public override async Task <DouYinAccessTokenModel> GetAccessTokenAsync(Dictionary <string, string> authorizeCallbackParams) { var accessTokenModel = (await HttpRequestApi.PostAsync <DouYinApiResponse <DouYinAccessTokenModel> >( AccessTokenUrl, BuildGetAccessTokenParams(authorizeCallbackParams) )).Data; if (accessTokenModel.HasError()) { throw new Exception(accessTokenModel.ErrorDescription); } return(accessTokenModel); }
public override async Task <MiUserInfoModel> GetUserInfoAsync(DefaultAccessTokenModel accessTokenModel) { var userInfoModel = await HttpRequestApi.GetAsync <MiApiResponse <MiUserInfoModel> >( UserInfoUrl, BuildGetUserInfoParams(accessTokenModel) ); if (userInfoModel.HasError()) { throw new Exception(userInfoModel.Description); } return(userInfoModel.Data); }
private async Task <string> GetLinkedInAvatarUrl(DefaultAccessTokenModel accessTokenModel) { var pictureInfo = await HttpRequestApi.GetAsync <LinkedInPictureInfoModelResponse>( UserPictureInfoUrl, null, new Dictionary <string, string> { ["Authorization"] = "Bearer " + accessTokenModel.AccessToken } ); return(pictureInfo?.ProfilePicture?.DisplayImage?.Elements?.FirstOrDefault()?.Identifiers?.FirstOrDefault()?.Identifier); }
public override async Task <DouYinUserInfoModel> GetUserInfoAsync(DouYinAccessTokenModel accessTokenModel) { var userInfoModel = (await HttpRequestApi.GetAsync <DouYinApiResponse <DouYinUserInfoModel> >( UserInfoUrl, BuildGetUserInfoParams(accessTokenModel) )).Data; if (userInfoModel.HasError()) { throw new Exception(userInfoModel.ErrorMessage); } return(userInfoModel); }
/// <summary> /// 美团获取用户信息接口,用的是 HTTP POST 方式 /// </summary> /// <param name="accessTokenModel"></param> /// <returns></returns> public override async Task <MeiTuanUserInfoModel> GetUserInfoAsync(DefaultAccessTokenModel accessTokenModel) { var userInfoModel = await HttpRequestApi.PostAsync <MeiTuanUserInfoModel>( UserInfoUrl, BuildGetUserInfoParams(accessTokenModel) ); if (userInfoModel.HasError()) { throw new Exception(userInfoModel.ErrorMessage); } return(userInfoModel); }
public override async Task <StackOverflowUserInfoModel> GetUserInfoAsync(DefaultAccessTokenModel accessTokenModel) { var userInfoModel = await HttpRequestApi.GetAsync <StackOverflowApiResponse <StackOverflowUserInfoModel> >( UserInfoUrl, BuildGetUserInfoParams(accessTokenModel) ); if (!string.IsNullOrEmpty(userInfoModel.ErrorMessage)) { throw new Exception(userInfoModel.ErrorMessage); } return(userInfoModel.Items?.First()); }
public override async Task <KuaiShouUserInfoModel> GetUserInfoAsync(KuaiShouAccessTokenModel accessTokenModel) { var userInfoModel = (await HttpRequestApi.GetAsync <KuaiShouApiUserInfoResponse <KuaiShouUserInfoModel> >( UserInfoUrl, BuildGetUserInfoParams(accessTokenModel) )).Data; if (userInfoModel.HasError()) { throw new Exception(userInfoModel.ErrorMessage); } userInfoModel.OpenId = accessTokenModel.OpenId; return(userInfoModel); }
public override async Task <XunLeiUserInfoModel> GetUserInfoAsync(DefaultAccessTokenModel accessTokenModel) { var userInfoModel = await HttpRequestApi.GetAsync <XunLeiUserInfoModel>( UserInfoUrl, null, new Dictionary <string, string>() { { "authorization", $"Bearer {accessTokenModel.AccessToken}" } } ); if (userInfoModel.HasError()) { throw new Exception(userInfoModel.ErrorMessage); } return(userInfoModel); }
public override async Task <FacebookUserInfoModel> GetUserInfoAsync(DefaultAccessTokenModel accessTokenModel) { var userInfoModel = await HttpRequestApi.GetAsync <FacebookUserInfoModel>( UserInfoUrl, new Dictionary <string, string>() { ["access_token"] = accessTokenModel.AccessToken, ["fields"] = string.IsNullOrEmpty(accessTokenModel.Scope) ? "id,name,email,picture" : accessTokenModel.Scope } ); if (userInfoModel.HasError()) { throw new Exception(userInfoModel.ErrorMessage); } return(userInfoModel); }
/// <summary> /// 迅雷会验证 UserAgent,如果是默认浏览器的话,就会抛出错误: /// <para>{"error":"permission_denied","error_code":7,"error_description":"[Danger], Please Do Not Save Your client_secret in browser, it is NOT SAFE"}</para> /// </summary> /// <param name="authorizeCallbackParams"></param> /// <returns></returns> public override async Task <DefaultAccessTokenModel> GetAccessTokenAsync(Dictionary <string, string> authorizeCallbackParams) { var accessTokenModel = await HttpRequestApi.PostAsync <DefaultAccessTokenModel>( AccessTokenUrl, BuildGetAccessTokenParams(authorizeCallbackParams), new Dictionary <string, string>() { { "User-Agent", "OAuthLogin.net App" } } ); if (accessTokenModel.HasError()) { throw new Exception(accessTokenModel.ErrorDescription); } return(accessTokenModel); }
public override async Task <GithubUserModel> GetUserInfoAsync(DefaultAccessTokenModel accessTokenModel) { var userInfoModel = await HttpRequestApi.GetAsync <GithubUserModel>( UserInfoUrl, BuildGetUserInfoParams(accessTokenModel), new Dictionary <string, string>() { ["Authorization"] = $"token {accessTokenModel.AccessToken}" } ); if (userInfoModel.HasError()) { throw new Exception(userInfoModel.ErrorMessage); } return(userInfoModel); }
public override async Task <MicrosoftUserInfoModel> GetUserInfoAsync(DefaultAccessTokenModel accessTokenModel) { var userInfoModel = await HttpRequestApi.GetAsync <MicrosoftUserInfoModel>( UserInfoUrl, null, new Dictionary <string, string> { ["Authorization"] = "Bearer " + accessTokenModel.AccessToken } ); if (userInfoModel.Error != null) { throw new Exception(userInfoModel.Error.Message); } userInfoModel.Name = userInfoModel.Name?.Replace(" ", ""); return(userInfoModel); }
public override async Task <DingTalkUserInfoModel> GetUserInfoAsync(DefaultAccessTokenModel accessTokenModel) { //https://ding-doc.dingtalk.com/document/app/obtain-the-user-information-based-on-the-sns-temporary-authorization#topic-1995619 var queryString = ToQueryString(BuildGetUserInfoParams(accessTokenModel)); var api = $"{UserInfoUrl}?{queryString}"; var responseText = await HttpRequestApi.PostJsonBodyAsync(api, new Dictionary <string, string> { //这里的 accessTokenModel.AccessToken 实质是回调页面 code,钉钉应用内登录不支持 access token ["tmp_auth_code"] = accessTokenModel.AccessToken }); var userInfoApiResponse = JsonSerializer.Deserialize <DingTalkGetUserInfoApiResponse>(responseText); if (userInfoApiResponse.HasError()) { throw new Exception(userInfoApiResponse.ErrorMessage); } return(userInfoApiResponse.UserInfo); }
/// <summary> /// 如果成功返回,即可在返回包中获取到 Access Token。 /// 返回如下字符串:access_token=FE04************************CCE2&expires_in=7776000 。 /// </summary> /// <param name="authorizeCallbackParams"></param> /// <returns></returns> public override async Task <DefaultAccessTokenModel> GetAccessTokenAsync(Dictionary <string, string> authorizeCallbackParams) { var accessTokenModelReponseText = await HttpRequestApi.PostStringAsync( AccessTokenUrl, BuildGetAccessTokenParams(authorizeCallbackParams) ); if (string.IsNullOrEmpty(accessTokenModelReponseText)) { throw new Exception("没有获取到正确的 AccessToken!"); } var arr = accessTokenModelReponseText.Split('&'); return(new DefaultAccessTokenModel() { AccessToken = arr[0], ExpiresIn = int.Parse(arr[1]) }); }
private async Task <T> InvokeAsync <T>(string httpMethod, string apiMethod, Dictionary <string, string> param = null) { if (param == null) { param = new Dictionary <string, string>(); } //param.Add("biz_content", JsonSerializer.Serialize(param)); param.Add("app_id", AppId); param.Add("method", apiMethod); param.Add("charset", "utf-8"); param.Add("sign_type", "RSA2"); param.Add("timestamp", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")); param.Add("version", "1.0"); param.Add("sign", AlipaySignTool.Sign(param, PrivateRSAKey)); foreach (var item in param) { Console.WriteLine($"InvokeAsync: [{item.Key}]=[{item.Value}]"); } var orignalQueryString = string.Join("&", param.Where(p => p.Key != "sign").Select(p => $"{p.Key}={p.Value}").ToArray()); using (var httpClient = HttpRequestApi.CreateHttpClient()) { httpClient.DefaultRequestHeaders.Add("Referer", "https://alipay.com"); httpClient.DefaultRequestHeaders.Add("User-Agent", HttpRequestApi.DEFAULT_USER_AGENT); httpClient.DefaultRequestHeaders.Add("accept", "application/json"); HttpResponseMessage response = null; if (httpMethod == "get") { var queryString = string.Join("&", param.Select(p => $"{p.Key}={p.Value}").ToArray()); var api = $"{API_URL}?{queryString}"; response = await httpClient.GetAsync(api); } else if (httpMethod == "post") { response = await httpClient.PostAsync(API_URL, new FormUrlEncodedContent(param)); } var responseText = await response.Content.ReadAsStringAsync(); Console.WriteLine($"API: responseText=[{responseText}]"); return(JsonSerializer.Deserialize <T>(responseText)); } }
private void SendUserSignUp(User user) { HttpRequestApi api = gameObject.AddComponent <HttpRequestApi>(); List <User> rows = new List <User>(); rows.Add(user); APPInfo appInfo = new APPInfo(); appInfo.page = 1; appInfo.size = 1000; appInfo.domain = 246; appInfo.row_model = "User"; appInfo.rows = rows; var JSON_Body = JsonUtility.ToJson(appInfo); Debug.Log(JSON_Body); PostRequestCallback signUpMethod = FinishSignUp; var result = StartCoroutine(api.PostRequest(JSON_Body, signUpMethod)); }
public override async Task <LinkedInUserInfoModel> GetUserInfoAsync(DefaultAccessTokenModel accessTokenModel) { var userInfoModelApiResponse = await HttpRequestApi.GetAsync <LinkedInUserInfoModelResponse>( UserInfoUrl, null, new Dictionary <string, string> { ["Authorization"] = "Bearer " + accessTokenModel.AccessToken } ); if (userInfoModelApiResponse.ErrorMessage != null) { throw new Exception(userInfoModelApiResponse.ErrorMessage); } var avatarUrl = await GetLinkedInAvatarUrl(accessTokenModel); var userInfoModel = new LinkedInUserInfoModel(userInfoModelApiResponse) { Avatar = avatarUrl }; return(userInfoModel); }
public async static void StoreFlightDetails() { List <FlightModel> flightCities = new List <FlightModel>(); const string domain = "https://kiwicom-prod.apigee.net/v2/search"; const string ApiKey = "pzQZdAjWhqNkCXPTYcq9dPZbJWu21RVf"; List <string> USAAirportCode = new List <string>() { "ATL", "LAX", "ORD", "DFW", "DEN", "JFK", "SFO", "LAS", "SEA" }; List <string> CanadaAirportCode = new List <string>() { "YYZ" }; using (HttpClient httpClient = new HttpClient()) { var response = await httpClient.GetAsync("https://flightdealdailydatascan.s3.amazonaws.com/FlightDetails.json"); if (response.StatusCode == System.Net.HttpStatusCode.OK) { var jsonString = await response.Content.ReadAsStringAsync(); flightCities.AddRange(JsonConvert.DeserializeObject <List <FlightModel> >(jsonString)); } foreach (var flightCity in flightCities) { try { if (USAAirportCode.Contains(flightCity.FromAirportCode) && USAAirportCode.Contains(flightCity.ToAirportCode)) { for (int j = 0; j <= 180; j++) { for (int i = 2; i <= 14; i++) { var data = await HttpRequestApi.GetDataAsync <FlightData>($"{domain}?fly_from={flightCity.FromAirportCode}&fly_to={flightCity.ToAirportCode}&date_from={DateTime.Now.ToString("dd/MM/yyyy")}&date_to={DateTime.Now.AddMonths(6).ToString("dd/MM/yyyy")}&return_from={DateTime.Now.AddDays(i).ToString("dd/MM/yyyy")}&return_to={DateTime.Now.AddDays(i).ToString("dd/MM/yyyy")}&sort=quality", ApiKey); var storeFlightScan = new List <FlightData>(); foreach (var d in data.Data) { d.ReturnDate = DateTime.Now.AddDays(i).ToString("dd/MM/yyyy"); } FlightRepository.StoreFlightDetails(data); } } } else if (USAAirportCode.Contains(flightCity.FromAirportCode) && USAAirportCode.Contains(flightCity.ToAirportCode)) { for (int j = 0; j <= 180; j++) { for (int i = 2; i <= 14; i++) { var data = await HttpRequestApi.GetDataAsync <FlightData>($"{domain}?fly_from={flightCity.FromAirportCode}&fly_to={flightCity.ToAirportCode}&date_from={DateTime.Now.ToString("dd/MM/yyyy")}&date_to={DateTime.Now.AddMonths(6).ToString("dd/MM/yyyy")}&return_from={DateTime.Now.AddDays(i).ToString("dd/MM/yyyy")}&return_to={DateTime.Now.AddDays(i).ToString("dd/MM/yyyy")}&sort=quality", ApiKey); var storeFlightScan = new List <FlightData>(); foreach (var d in data.Data) { d.ReturnDate = DateTime.Now.AddDays(i).ToString("dd/MM/yyyy"); } FlightRepository.StoreFlightDetails(data); } } } else { for (int j = 0; j <= 180; j++) { for (int i = 7; i <= 21; i++) { string s = $"{domain}?fly_from={flightCity.FromAirportCode}&fly_to={flightCity.ToAirportCode}&date_from={DateTime.Now.AddDays(j).ToString("dd/MM/yyyy")}&date_to={DateTime.Now.AddDays(j).ToString("dd/MM/yyyy")}&return_from={DateTime.Now.AddDays(i).ToString("dd/MM/yyyy")}&return_to={DateTime.Now.AddDays(i).ToString("dd/MM/yyyy")}&sort=quality"; var data = await HttpRequestApi.GetDataAsync <FlightData>($"{domain}?fly_from={flightCity.FromAirportCode}&fly_to={flightCity.ToAirportCode}&date_from={DateTime.Now.AddDays(j).ToString("dd/MM/yyyy")}&date_to={DateTime.Now.AddDays(j).ToString("dd/MM/yyyy")}&return_from={DateTime.Now.AddDays(i).ToString("dd/MM/yyyy")}&return_to={DateTime.Now.AddDays(i).ToString("dd/MM/yyyy")}&sort=quality", ApiKey); var storeFlightScan = new List <FlightData>(); foreach (var d in data.Data) { d.ReturnDate = DateTime.Now.AddDays(i).ToString("dd/MM/yyyy"); } FlightRepository.StoreFlightDetails(data); } } } } catch (Exception e) { } } } return; }
/// <summary> /// 获取用户 openId /// </summary> /// <param name="accessToken"></param> /// <returns></returns> public async Task <string> GetOpenId(string accessToken) { var response = await HttpRequestApi.GetStringAsync($"{OPENID_URI}?access_token={accessToken}"); return(JsonSerializer.Deserialize <QQOpenIdModel>(ClearCallbackResponse(response)).OpenId); }