Beispiel #1
0
        public async Task <CookAppPartnerLoginUserDto> VerifyCookAppPartnerLoginUserByAuthCode(string authCode)
        {
            var ret = await _wechatProxy.GetAccessToken(_config.WeChatAppId, _config.WeChatAppSecret, authCode, "authorization_code");

            if (ret == null || ret.AccessToken == null)
            {
                return(null);
            }

            var partnerUser = _cookappPartnerLoginUserRepo.GetFiltered(o => o.PartnerKey == ret.OpenId).FirstOrDefault();

            if (partnerUser == null)
            {
                partnerUser = CookAppPartnerLoginUserFactory.CreateInstance(authCode, ret.AccessToken, ret.ExpiresIn, ret.RefreshToken, ret.Scope, ret.UnionId, LoginChannel.Wechat, ret.OpenId);
                _cookappPartnerLoginUserRepo.Add(partnerUser);
                _dbUnitOfWork.Commit();
            }

            return(MapperProvider.Mapper.Map <CookAppPartnerLoginUserDto>(partnerUser));
        }
Beispiel #2
0
        public async Task <CookAppPartnerLoginUserDto> VerifyWechatAppletLoginUserByCode(string code)
        {
            var reqModel = new WeChatOpenIdRequestDto {
                AppId = _config.WeChatAppId, Code = code, Secret = _config.WeChatAppSecret
            };

            var result = await _wechatProxy.CheckAuthCode(reqModel);

            if (result == null || result.OpenId == null)
            {
                return(null);
            }

            var partnerUser = _cookappPartnerLoginUserRepo.GetFiltered(o => o.PartnerKey == result.OpenId).FirstOrDefault();

            if (partnerUser == null)
            {
                partnerUser = CookAppPartnerLoginUserFactory.CreateInstance(code, result.SessionKey, 3600 * 24 * 30, "", "", result.UnionId, LoginChannel.Wechat, result.OpenId);
                _cookappPartnerLoginUserRepo.Add(partnerUser);
                _dbUnitOfWork.Commit();
            }

            return(MapperProvider.Mapper.Map <CookAppPartnerLoginUserDto>(partnerUser));
        }