コード例 #1
0
        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);
        }
コード例 #2
0
ファイル: MiOAuth.cs プロジェクト: xxf2103625/MrHuo.OAuth
        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);
        }
コード例 #3
0
        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);
        }
コード例 #4
0
        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);
        }
コード例 #5
0
        /// <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);
        }
コード例 #6
0
        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());
        }
コード例 #7
0
        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);
        }
コード例 #8
0
ファイル: XunLeiOAuth.cs プロジェクト: xxf2103625/MrHuo.OAuth
        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);
        }
コード例 #9
0
        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);
        }
コード例 #10
0
ファイル: XunLeiOAuth.cs プロジェクト: xxf2103625/MrHuo.OAuth
        /// <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);
        }
コード例 #11
0
        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);
        }
コード例 #12
0
        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);
        }
コード例 #13
0
        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);
        }
コード例 #14
0
        /// <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])
            });
        }
コード例 #15
0
        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));
            }
        }
コード例 #16
0
ファイル: SignUpController.cs プロジェクト: sammx343/BonesElf
    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));
    }
コード例 #17
0
        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);
        }
コード例 #18
0
        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;
        }
コード例 #19
0
ファイル: QQOAuth.cs プロジェクト: xxf2103625/MrHuo.OAuth
        /// <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);
        }