This action will force synchronization from uncle wang/OAuthApp, which will overwrite any changes that you have made since you forked the repository, and can not be recovered!!!
Synchronous operation will process in the background and will refresh the page when finishing processing. Please be patient.
using OAuthApp.Data;using Microsoft.AspNetCore.Http;using Microsoft.AspNetCore.Mvc;using Newtonsoft.Json;using Newtonsoft.Json.Linq;using System.Linq;using System.Net.Http;using System.Web;namespace OAuthApp.Controllers{public class WechatController : Controller{readonly HttpContext _httpContext;readonly AppDbContext _dbContext;const string Authorize_url = "https://open.weixin.qq.com/connect/oauth2/authorize";// 开放平台网站应用专用const string Authorize_url2 = "https://open.weixin.qq.com/connect/qrconnect";public WechatController(IHttpContextAccessor contextAccessor,AppDbContext dbContext){_httpContext = contextAccessor.HttpContext;_dbContext = dbContext;}public const string default_scope = "snsapi_userinfo";[HttpGet]public ActionResult Authorize([FromQuery] string code, [FromQuery] long state, [FromQuery] string jxwechat){var props = _dbContext.PropertySettings.Where(x => x.ChannelCode.Equals(ChannelCodes.App) && x.ChannelAppId == state).ToList();if (props.Count < 1){return NotFound("请先配置应用");}var Prop_WechatClientID = props.FirstOrDefault(x => x.Name.Equals(PropKeyConst.WechatClientID));var Prop_WechatClientSecret = props.FirstOrDefault(x => x.Name.Equals(PropKeyConst.WechatClientSecret));var Prop_WechatScope = props.FirstOrDefault(x => x.Name.Equals(PropKeyConst.WechatScope));var Prop_WechatRedirectUri = props.FirstOrDefault(x => x.Name.Equals(PropKeyConst.WechatRedirectUri));if (Prop_WechatClientID == null ||Prop_WechatClientSecret == null ||Prop_WechatScope == null ||Prop_WechatRedirectUri == null){return NotFound("请先配置应用");}var WechatClientID = Prop_WechatClientID.Value;var WechatClientSecret = Prop_WechatClientSecret.Value;var WechatScope = Prop_WechatScope.Value;var WechatRedirectUri = Prop_WechatRedirectUri.Value;if (string.IsNullOrWhiteSpace(code) && string.IsNullOrWhiteSpace(jxwechat)){var host = _httpContext.Request.Scheme + "://" + _httpContext.Request.Host.ToString();var redirect_uri = $"{host}/Wechat/Authorize";var queryStrings = $"appid={WechatClientID}&redirect_uri={redirect_uri}&response_type=code&scope={WechatScope}&state={state}#wechat_redirect";var redirectTo = string.Empty;if (WechatScope.Equals("snsapi_login")){redirectTo = Authorize_url2 + "?" + queryStrings;}else{redirectTo = Authorize_url + "?" + queryStrings;}return new RedirectResult(redirectTo);}else{var OAuthorizeResult = GetAccessToken(WechatClientID, WechatClientSecret, code, WechatScope);var redirectTo = WechatRedirectUri + $"?id={state}&app_wechat={HttpUtility.UrlEncode(OAuthorizeResult)}";return new RedirectResult(redirectTo);}}private static string GetAccessToken(string client_id, string client_secret, string code, string scope){var result = string.Empty;using (var hc = new HttpClient()){var url = $"https://api.weixin.qq.com/sns/oauth2/access_token?appid={client_id}&secret={client_secret}&code={code}&grant_type=authorization_code";result = hc.GetStringAsync(url).Result;}var responseJson = JsonConvert.DeserializeObject<JObject>(result);#region 报错if (responseJson["errcode"] != null && responseJson["errcode"].HasValues){return responseJson["errcode"].Value<string>();}#endregion#region 如果scope是snsapi_userinfoif (scope.Equals(default_scope)){var access_token = responseJson["access_token"].Value<string>();var openid = responseJson["openid"].Value<string>();using (var hc = new HttpClient()){var url = $"https://api.weixin.qq.com/sns/userinfo?access_token={access_token}&openid={openid}&lang=zh_CN";result = hc.GetStringAsync(url).Result;}responseJson = JsonConvert.DeserializeObject<JObject>(result);#region 报错if (responseJson["errcode"] != null && responseJson["errcode"].HasValues){return responseJson["errcode"].Value<string>();}#endregionresponseJson.Add("access_token", access_token);return JsonConvert.SerializeObject(responseJson);}#endregion//scope是snsapi_basereturn result;}}}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。