Ejemplo n.º 1
0
        protected override Dictionary <string, string> BuildGetUserInfoParams(DefaultAccessTokenModel accessTokenModel)
        {
            var dict = base.BuildGetUserInfoParams(accessTokenModel);

            dict["getNickName"] = "1";
            return(dict);
        }
Ejemplo n.º 2
0
 protected override Dictionary <string, string> BuildGetUserInfoParams(DefaultAccessTokenModel accessTokenModel)
 {
     return(new Dictionary <string, string>
     {
         ["clientId"] = oauthConfig.AppId,
         ["token"] = accessTokenModel.AccessToken,
     });
 }
Ejemplo n.º 3
0
 protected override Dictionary <string, string> BuildGetUserInfoParams(DefaultAccessTokenModel accessTokenModel)
 {
     return(new Dictionary <string, string>()
     {
         ["key"] = ApiKey,
         ["access_token"] = accessTokenModel.AccessToken,
         ["site"] = "stackoverflow"
     });
 }
Ejemplo n.º 4
0
 protected override Dictionary <string, string> BuildGetUserInfoParams(DefaultAccessTokenModel accessTokenModel)
 {
     return(new Dictionary <string, string>
     {
         ["access_token"] = accessTokenModel.AccessToken,
         ["app_id"] = (oauthConfig.AppId ?? ""),
         ["secret"] = (oauthConfig.AppKey ?? ""),
     });
 }
Ejemplo n.º 5
0
        protected override Dictionary <string, string> BuildGetUserInfoParams(DefaultAccessTokenModel accessTokenModel)
        {
            var openId = GetOpenId(accessTokenModel.AccessToken).ConfigureAwait(false).GetAwaiter().GetResult();

            return(new Dictionary <string, string>()
            {
                ["access_token"] = accessTokenModel.AccessToken,
                ["oauth_consumer_key"] = oauthConfig.AppId,
                ["openid"] = openId,
            });
        }
Ejemplo n.º 6
0
        protected override Dictionary <string, string> BuildGetUserInfoParams(DefaultAccessTokenModel accessTokenModel)
        {
            var timestamp = DingTalkSignTool.GetTimestamp();
            var sign      = DingTalkSignTool.Sign(timestamp, oauthConfig.AppKey);

            return(new Dictionary <string, string>
            {
                ["accessKey"] = oauthConfig.AppId,
                ["timestamp"] = timestamp,
                ["signature"] = sign
            });
        }
Ejemplo n.º 7
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());
        }
Ejemplo n.º 8
0
        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);
        }
Ejemplo n.º 9
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);
        }
Ejemplo n.º 10
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);
        }
Ejemplo n.º 11
0
        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);
        }
Ejemplo n.º 12
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);
        }
Ejemplo n.º 13
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);
        }
Ejemplo n.º 14
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);
        }
Ejemplo n.º 15
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);
        }
Ejemplo n.º 16
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);
        }