微信浏览器打开连接服务器错误怎么解决方法,微信无法访问,其他浏览器正常...

usingMicrosoft.AspNetCore.Http;usingMicrosoft.AspNetCore.Identity;usingMicrosoft.AspNetCore.Mvc;usingMicrosoft.AspNetCore.Mvc.Filters;usingMicrosoft.Extensions.Configuration;usingNewtonsoft.Json;usingSilver.Core;usingSilver.Core.Domain.Identity;usingSystem;usingSystem.Linq;usingSystem.Threading.Tasks;usingSystem.Web;usingMicrosoft.Extensions.Logging;namespaceSilver.Web.Framework.Attributes {public classWeChatAttribute : TypeFilterAttribute {public WeChatAttribute() : base(typeof(AsyncLoginImpl)) {

}private classAsyncLoginImpl : IAsyncActionFilter {public AsyncLoginImpl(UserManager userManager, SignInManager signInManager, IConfiguration cfg, IHttpHelper http, ILoggerlogger) {

_userManager=userManager;

_signInManager=signInManager;

_cfg=cfg;

_http=http;

_logger=logger;

}private readonly UserManager_userManager;private readonly SignInManager_signInManager;private readonlyIConfiguration _cfg;private readonlyIHttpHelper _http;private readonly ILogger_logger;public asyncTask OnActionExecutionAsync(ActionExecutingContext context, ActionExecutionDelegate next) {var httpContext =context.HttpContext;if(_signInManager.IsSignedIn(httpContext.User))awaitnext();else if (httpContext.Request.Headers["User-Agent"].ToString()

.IndexOf("MicroMessenger", StringComparison.OrdinalIgnoreCase) > 0) {var query =httpContext.Request.Query;var code = query.SingleOrDefault(c => c.Key == "code");var appid = _cfg.GetValue("Authentication:WeChat:AppID");var appsecret = _cfg.GetValue("Authentication:WeChat:AppSecret");if (string.IsNullOrEmpty(code.Value)) {var redirect_uri = HttpUtility.UrlEncode(_cfg.GetValue("Url"));var url =$"https://open.weixin.qq.com/connect/oauth2/authorize?appid={appid}&redirect_uri={redirect_uri}&response_type=code&scope=snsapi_base&state=login#wechat_redirect";

context.Result= newRedirectResult(url);

}else {var url = $"https://api.weixin.qq.com/sns/oauth2/access_token?appid={appid}&secret={appsecret}&code={code.Value}&grant_type=authorization_code";var data = _http.Get(url);if (data.IndexOf("access_token", StringComparison.Ordinal) > 0) {var accessToken =JsonConvert.DeserializeObject(data);var user = _userManager.Users.SingleOrDefault(c => c.WeChatUserOpenId ==accessToken.openid);if (user == null) {

httpContext.Response.Cookies.Append("openid", accessToken.openid, newCookieOptions {

Expires= DateTime.Now.AddMinutes(60)

});awaitnext();

}else{await _signInManager.SignInAsync(user, true);

context.Result= new RedirectResult("/");

}

}else{var errCode =JsonConvert.DeserializeObject(data);

_logger.LogError($"请求openId发生错误,错误代码:{errCode.errcode},错误消息:{errCode.errmsg}");awaitnext();

}

}

}else{awaitnext();

}

}

}protected classAccessTokenModel {public string access_token { get; set; }public string expires_in { get; set; }public string refresh_token { get; set; }public string openid { get; set; }public string scope { get; set; }

}protected classErrCodeModel {public string errcode { get; set; }public string errmsg { get; set; }

}protected classUserInfo {public string openid { get; set; }public string nickname { get; set; }public string sex { get; set; }public string province { get; set; }public string city { get; set; }public string country { get; set; }public string headimgurl { get; set; }public string unionid { get; set; }

}

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值