/// <summary>
 /// 配置刷新令牌
 /// </summary>
 /// <param name="builder">授权参数生成器</param>
 /// <param name="token">访问令牌参数</param>
 /// <param name="config">授权配置</param>
 protected override void ConfigRefreshToken(AuthorizationParameterBuilder builder, string token, WechatAuthorizationConfig config)
 {
     builder.GatewayUrl(config.RefreshTokenUrl)
     .AppId(config.AppId)
     .GrantType(OAuthConst.RefreshToken)
     .RefreshToken(token);
 }
 /// <summary>
 /// 配置
 /// </summary>
 /// <param name="builder">授权参数生成器</param>
 /// <param name="param">授权参数</param>
 /// <param name="config">授权配置</param>
 protected override void ConfigGenerateUrl(AuthorizationParameterBuilder builder, AuthorizationParam param, OsChinaAuthorizationConfig config)
 {
     builder.GatewayUrl(PcAuthorizationUrl)
     .ClientId(config.AppId)
     .ResponseType(param.ResponseType)
     .RedirectUri(string.IsNullOrWhiteSpace(param.RedirectUri) ? config.CallbackUrl : param.RedirectUri)
     .State(param.State);
 }
 /// <summary>
 /// 配置获取访问令牌
 /// </summary>
 /// <param name="builder">授权参数生成器</param>
 /// <param name="param">访问令牌参数</param>
 /// <param name="config">授权配置</param>
 protected override void ConfigGetToken(AuthorizationParameterBuilder builder, AccessTokenParam param, WechatAuthorizationConfig config)
 {
     builder.GatewayUrl(config.AccessTokenUrl)
     .AppId(config.AppId)
     .Secret(config.AppKey)
     .Code(param.Code)
     .GrantType(OAuthConst.AuthorizationCode);
 }
Пример #4
0
 /// <summary>
 /// 配置
 /// </summary>
 /// <param name="builder">授权参数生成器</param>
 /// <param name="param">授权参数</param>
 /// <param name="config">授权配置</param>
 protected override void ConfigGenerateUrl(AuthorizationParameterBuilder builder, AuthorizationParam param, GithubAuthorizationConfig config)
 {
     builder.GatewayUrl(config.AuthorizationUrl)
     .ClientId(config.AppId)
     .Scope(param.Scope)
     .State(param.State)
     .RedirectUri(string.IsNullOrWhiteSpace(param.RedirectUri) ? config.CallbackUrl : param.RedirectUri)
     .Add("allow_signup", param.AllowSignup ? "true" : "false");
 }
        /// <summary>
        /// 获取访问令牌
        /// </summary>
        /// <param name="param">访问令牌参数</param>
        /// <returns></returns>
        public override async Task <AuthorizationResult> GetTokenAsync(AccessTokenParam param)
        {
            var config = await ConfigProvider.GetConfigAsync();

            Validate(config, param);
            var builder = new AuthorizationParameterBuilder();

            ConfigGetToken(builder, param, config);
            return(await RequestResult(config, builder, ParameterParserType.Json, Success));
        }
 /// <summary>
 /// 配置获取访问令牌
 /// </summary>
 /// <param name="builder">授权参数生成器</param>
 /// <param name="param">访问令牌参数</param>
 /// <param name="config">授权配置</param>
 protected override void ConfigGetToken(AuthorizationParameterBuilder builder, AccessTokenParam param, GiteeAuthorizationConfig config)
 {
     builder.GatewayUrl(config.AccessTokenUrl)
     .GrantType(OAuthConst.AuthorizationCode)
     .Code(param.Code)
     .ClientId(config.AppId)
     .RedirectUri(string.IsNullOrWhiteSpace(param.RedirectUri) ? config.CallbackUrl : param.RedirectUri,
                  false)
     .ClientSecret(config.AppKey);
 }
        /// <summary>
        /// 获取用户信息
        /// </summary>
        /// <param name="param">授权用户参数</param>
        /// <returns></returns>
        public async Task<GithubAuthorizationUserInfoResult> GetUserInfoAsync(GithubAuthorizationUserRequest param)
        {
            var config = await ConfigProvider.GetConfigAsync();
            Validate(config, param.ToParam());
            var builder = new AuthorizationParameterBuilder();
            builder.GatewayUrl(GetUserInfoUrl)
                .AccessToken(param.AccessToken);

            var result = await RequestResult(config, builder, ParameterParserType.Json,
                (t) => t.HasKey("id"));
            return result.Success ? result.Result.ToObject<GithubAuthorizationUserInfoResult>() : null;
        }
Пример #8
0
 /// <summary>
 /// 配置
 /// </summary>
 /// <param name="builder">授权参数生成器</param>
 /// <param name="param">授权参数</param>
 /// <param name="config">授权配置</param>
 protected override void ConfigGenerateUrl(AuthorizationParameterBuilder builder, AuthorizationParam param, WeiboAuthorizationConfig config)
 {
     builder.GatewayUrl(config.AuthorizationUrl)
     .ClientId(config.AppId)
     .ResponseType(param.ResponseType)
     .State(param.State)
     .RedirectUri(string.IsNullOrWhiteSpace(param.RedirectUri) ? config.CallbackUrl : param.RedirectUri)
     .Scope(param.Scope)
     .Add("display", param.Display)
     .Add("forcelogin", param.Forcelogin.ToString().ToLower())
     .Add("language", param.Language);
 }
        /// <summary>
        /// 刷新令牌
        /// </summary>
        /// <param name="token">刷新令牌</param>
        /// <returns></returns>
        public override async Task <AuthorizationResult> RefreshTokenAsync(string token)
        {
            if (string.IsNullOrWhiteSpace(token))
            {
                throw new ArgumentNullException(nameof(token));
            }
            var config = await ConfigProvider.GetConfigAsync();

            Validate(config);
            var builder = new AuthorizationParameterBuilder();

            ConfigRefreshToken(builder, token, config);
            return(await RequestResult(config, builder, ParameterParserType.Json, Success));
        }
Пример #10
0
        /// <summary>
        /// 获取用户信息
        /// </summary>
        /// <param name="param">授权用户参数</param>
        /// <returns></returns>
        public async Task <CodingAuthorizationUserInfoResult> GetUserInfoAsync(CodingAuthorizationUserRequest param)
        {
            var config = await ConfigProvider.GetConfigAsync();

            Validate(config, param.ToParam());
            var builder = new AuthorizationParameterBuilder();

            builder.GatewayUrl(GetUserInfoUrl)
            .AccessToken(param.AccessToken);

            var result = await RequestResult(config, builder, ParameterParserType.Json,
                                             (t) => t.GetValue("code") == "0");

            return(result.Success ? result.GetValue("data").ToObject <CodingAuthorizationUserInfoResult>() : null);
        }
Пример #11
0
        /// <summary>
        /// 获取用户信息
        /// </summary>
        /// <param name="param">授权用户参数</param>
        /// <returns></returns>
        public async Task <QQAuthorizationUserInfoResult> GetUserInfoAsync(QQAuthorizationUserRequest param)
        {
            var config = await ConfigProvider.GetConfigAsync();

            Validate(config, param.ToParam());
            var builder = new AuthorizationParameterBuilder();

            builder.GatewayUrl(GetUserInfoUrl)
            .AccessToken(param.AccessToken)
            .Add("oauth_consumer_key", config.AppId)
            .OpenId(param.OpenId);
            var result = await RequestResult(config, builder, ParameterParserType.Json,
                                             (t) => t.GetValue("ret") == "0");

            return(result.Success ? result.Result.ToObject <QQAuthorizationUserInfoResult>() : null);
        }
        /// <summary>
        /// 获取用户信息
        /// </summary>
        /// <param name="param">授权用户参数</param>
        /// <returns></returns>
        public async Task <WechatAuthorizationUserInfoResult> GetUserInfoAsync(WechatAuthorizationUserRequest param)
        {
            var config = await ConfigProvider.GetConfigAsync();

            Validate(config, param.ToParam());
            var builder = new AuthorizationParameterBuilder();

            builder.GatewayUrl(GetUserInfoUrl)
            .AccessToken(param.AccessToken)
            .OpenId(param.OpenId)
            .Add("lang", param.Lang);

            var result = await RequestResult(config, builder, ParameterParserType.Json,
                                             (t) => t.HasKey("openid"));

            return(result.Success ? result.Result.ToObject <WechatAuthorizationUserInfoResult>() : null);
        }
Пример #13
0
        /// <summary>
        /// 获取用户OpenId
        /// </summary>
        /// <param name="token">授权令牌</param>
        /// <returns></returns>
        public async Task <string> GetOpenIdAsync(string token)
        {
            if (string.IsNullOrWhiteSpace(token))
            {
                throw new ArgumentNullException(nameof(token));
            }
            var config = await ConfigProvider.GetConfigAsync();

            Validate(config);
            var builder = new AuthorizationParameterBuilder();

            builder.GatewayUrl(GetOpenIdUrl)
            .AccessToken(token);
            var result = await RequestResult(config, builder, ParameterParserType.Jsonp, (t) => t.HasKey("openid"));

            if (!config.AppId.Equals(result.GetValue(OAuthConst.ClientId)))
            {
                throw new ArgumentException("客户端ID不一致");
            }
            return(result.GetValue("openid"));
        }
Пример #14
0
        /// <summary>
        /// 请求结果
        /// </summary>
        /// <param name="config">授权配置</param>
        /// <param name="builder">授权参数生成器</param>
        /// <param name="type">参数解析器类型</param>
        /// <param name="success">请求成功条件</param>
        /// <returns></returns>
        protected override async Task <AuthorizationResult> RequestResult(GithubAuthorizationConfig config, AuthorizationParameterBuilder builder, ParameterParserType type,
                                                                          Func <AuthorizationResult, bool> success)
        {
            var result = new AuthorizationResult(await Request(builder, config.ApplicationName), success, type);

            result.Parameter = builder.ToString();
            result.Message   = GetMessage(result);
            WriteLog(config, builder, result);
            return(result);
        }
Пример #15
0
 /// <summary>
 /// 发送请求
 /// </summary>
 /// <param name="builder">授权参数生成器</param>
 /// <param name="appName">应用名称</param>
 /// <returns></returns>
 private async Task <string> Request(AuthorizationParameterBuilder builder, string appName)
 {
     return(await Web.Client().Get(builder.ToString()).Header("User-Agent", appName).ResultAsync());
 }
 /// <summary>
 /// 处理授权地址
 /// </summary>
 /// <param name="builder">授权参数生成器</param>
 /// <returns></returns>
 protected override string HandlerUrl(AuthorizationParameterBuilder builder) => $"{builder.ToString()}#wechat_redirect";