public async Task <ResultModel <string> > GetOpenID(GetOpenIDRequestModel requestModel)
        {
            try
            {
                Guid           userID          = _userService.GetUserID(requestModel.Token);
                ApplicationDTO applicationInfo =
                    await _applicationService.GetApplicationInfoAsync(requestModel.AppID, userID);

                if (applicationInfo == null)
                {
                    return(ResultModel <string> .Fail("未注册该小程序"));
                }
                var weChatConfig = new WeChatConfigModel
                {
                    APPID     = applicationInfo.AppID,
                    APPSECRET = applicationInfo.AppSecret
                };
                var    manager = new WeChatMiniProgramManager(weChatConfig);
                string openID  = manager.GetOpenIDByCode(requestModel.Code);
                return(ResultModel <string> .Success(openID, "获取OpenID成功"));
            }
            catch (InvalidOperationException ex)
            {
                return(ResultModel <string> .Fail(ex.Message));
            }
            catch (WeChatException ex)
            {
                return(ResultModel <string> .Fail(ex.Message));
            }
        }
예제 #2
0
        public async Task <ResultModel <UserLoginResultModel> > LoginByWeChatCode(WeChatMiniProgramLoginRequestModel requestModel)
        {
            var    weChatAppletManager = new WeChatMiniProgramManager(ApplicationConfig.CYRecordBillWeChatConfig);
            string openID = weChatAppletManager.GetOpenIDByCode(requestModel.Code);

            try
            {
                TokenResponse tokenResponse = await IdentityClientHelper.GetTokenResponseAsync(openID, requestModel.NickName, LoginCategory.OpenID);

                if (tokenResponse.IsError)
                {
                    return(ResultModel <UserLoginResultModel> .Fail(tokenResponse.ErrorDescription));
                }
                var result = new UserLoginResultModel(tokenResponse.Raw.JsonToObject <TokenResultModel>());
                return(ResultModel <UserLoginResultModel> .Success(result, "登录成功"));
            }
            catch (InvalidOperationException ex)
            {
                return(ResultModel <UserLoginResultModel> .Fail(ex.Message));
            }
        }