Location>code7788 >text

A third-party OAuth2 authorized login integrated library based on C# open source

Popularity:642 ℃/2025-02-06 20:40:42
        /// <summary>
/// Three-party login callback
        /// </summary>
/// <param name="id">Which company</param>
/// <param name="authResult">Receive authorization code</param>
        /// <returns></returns>
        [HttpGet]
        public IActionResult AuthCallback([FromRoute] LoginWhich id, AuthorizeResult authResult)
        {
//Value obtains end user information
            var publicUser = (id, authResult);

            var result = (true);
            (result);

            return Ok(result);
        }

        /// <summary>
/// Three-party login callback, information on all steps
        /// </summary>
/// <param name="id">Which company</param>
/// <param name="authResult">Receive authorization code</param>
        /// <returns></returns>
        [HttpGet]
        public IActionResult AuthCallback_Steps([FromRoute] LoginWhich id, AuthorizeResult authResult)
        {
//Include step information
            (DocModel tokenResult, DocModel openidResult, DocModel userResult, PublicUserResult publicUser) = (id, authResult);

            var result = new
            {
                tokenResult,
                openidResult,
                userResult,
                publicUser
            }.ToJson(true);
            (result);

            return Ok(result);
        }

        /// <summary>
/// Three-party login callback, step by step
        /// </summary>
/// <param name="id">Which company</param>
/// <param name="authResult">Receive authorization code</param>
        /// <returns></returns>
        [HttpGet]
        public IActionResult AuthCallback_Step([FromRoute] LoginWhich? id, AuthorizeResult authResult)
        {
            try
            {
                if (id == null)
                {
throw new Exception($" does not support authorization in this method {["id"]?.ToString()}");
                }
                else if (())
                {
throw new Exception($"Authorization failed");
                }
                else
                {
                    var loginType = ;
                    ($"{}----- Sign in with {loginType} {:yyyy-MM-dd HH:mm:ss}{}");

//step: access token (non-old version DingTalk)
                    DocModel tokenResult = null;
//step: openid (QQ only)
                    DocModel openidResult = null;
//step: user (not Taobao)
                    DocModel userResult = null;

                    if (!(loginType ==  && ))
                    {
                        tokenResult = <AuthorizeResult, object>(loginType, , beforeResult: authResult);
                        ($"{}{nameof()}");
                        ((true));

//step: refresh token (optional, only supported)
                        if (!new[] { , , ,  }.Contains(loginType)
                            && !(loginType ==  && ))
                        {
                            tokenResult = <DocModel, object>(loginType, , beforeResult: tokenResult);
                            ($"{}{nameof()}");
                            ((true));
                        }
                    }
                    if (loginType == )
                    {
                        openidResult = <DocModel, object>(loginType, , beforeResult: tokenResult);
                        userResult = <DocModel[], object>(loginType, , beforeResult: [tokenResult, openidResult]);
                    }
                    else if (loginType ==  && )
                    {
                        userResult = <object, AuthorizeResult>(loginType, , reqModel: authResult);
                    }
                    else if (loginType != )
                    {
                        userResult = <DocModel, object>(loginType, , beforeResult: tokenResult);
                    }

                    if (openidResult != null)
                    {
                        ($"{}{nameof()}");
                        ((true));
                    }
                    if (userResult != null)
                    {
                        ($"{}{nameof()}");
                        ((true));
                    }

                    return Ok("Done!");
                }
            }
            catch (Exception ex)
            {
                (ex);
return BadRequest($"Authorization failed {}");
            }
        }

        /// <summary>
/// Three-party login callback, customize the build request parameters
        /// </summary>
/// <param name="code">Receive authorization code</param>
        /// <returns></returns>
        [HttpGet]
        public IActionResult AuthCallback_GitHub(string code)
        {
            //step: access token
            DocModel tokenResult = <object, GitHubAccessTokenModel>(, , reqModel: new GitHubAccessTokenModel()
            {
                Code = code
            });
            ((true));

            //step: user
            DocModel userResult = <object, GitHubUserModel>(, , reqModel: new GitHubUserModel()
            {
                Access_Token = ("access_token")
            });

            ((true));

            return Content();
        }