protected override LoginOAuthData GetOAuthResult(CoreContext coreContext, IDictionary <string, object> parameter) { LoginOAuthData data = new LoginOAuthData(); var Code = parameter["code"] as string; if (string.IsNullOrEmpty(Code)) { data.ErrorCode = 1; data.ErrorMessage = "授权失败"; return(data); } var Endata = parameter["EncryptedData"] as string; var IV = parameter["IV"] as string; var Appid = parameter["Appid"] as string; WxConfig config = coreContext.WxConfig.Where(w => w.OwnerAccount == "xcx" && w.Status == "1").FirstOrDefault(); string appId = config.AppId; string appSecretd = config.AppSecret; JObject keyData = GetKey(appId, appSecretd, Code); if (!string.IsNullOrEmpty(keyData["openid"].Value <string>())) { JObject user = JsonConvert.DeserializeObject <JObject>(new AESCUtil(keyData["session_key"].Value <string>(), IV.Replace(" ", "+")).AESDecrypt(Endata.Replace(" ", "+"))); data.NickName = ConvertString(user["nickName"].Value <string>()); data.OpenId = user["openId"].Value <string>(); data.PhotoUrl = user["avatarUrl"].Value <string>(); data.UnionId = user["unionId"].Value <string>(); data.Sex = user["gender"].Value <string>(); var member = coreContext.MemberInfo.Where(m => m.WxUnionid == data.UnionId).Select(m => new { m.AccountId, m.NickName, m.PhotoUrl, m.Sex, m.WxUnionid }).FirstOrDefault(); if (member != null && !string.IsNullOrEmpty(member.AccountId)) { data.NickName = member.NickName; data.PhotoUrl = member.PhotoUrl; data.UnionId = member.WxUnionid; data.Sex = member.Sex; coreContext.Database.ExecuteSqlCommand($"update member_info set xcx_open_id={data.OpenId} where wx_unionid={data.UnionId}"); } } else { data.ErrorCode = keyData["errcode"].Value <int>(); data.ErrorMessage = keyData["errmsg"].Value <string>(); } return(data); }
protected override LoginOAuthData GetOAuthResult(CoreContext coreContext, IDictionary <string, object> parameter) { LoginOAuthData data = new LoginOAuthData(); if (!string.IsNullOrEmpty(parameter["code"] as string)) { WxConfig config = coreContext.WxConfig.Where(w => w.OwnerAccount == "wx" && w.Status == "1").FirstOrDefault(); string appId = config.AppId; string appSecretd = config.AppSecret; var weixinAccessToken = Senparc.Weixin.MP.AdvancedAPIs.OAuthApi.GetAccessTokenAsync(appId, appSecretd, parameter["code"] as string).Result; //WeixinAccessToken weixinAccessToken = GetAccessToken(appId, appSecretd, parameter["code"] as string); if (weixinAccessToken.errcode == 0) { data.OpenId = weixinAccessToken.openid; data.UnionId = weixinAccessToken.unionid; var member = coreContext.MemberInfo.Where(m => m.WxUnionid == data.UnionId).Select(m => new { m.AccountId, m.NickName, m.PhotoUrl, m.Sex, m.WxUnionid }).FirstOrDefault(); if (member != null && !string.IsNullOrEmpty(member.AccountId)) { data.NickName = member.NickName; data.PhotoUrl = member.PhotoUrl; data.UnionId = member.WxUnionid; data.Sex = member.Sex; coreContext.Database.ExecuteSqlCommand($"update member_info set wx_open_id={data.OpenId} where wx_unionid={data.UnionId}"); } else { if (parameter["state"] as string == "snsapi_userinfo") { OAuthUserInfo user = OAuthApi.GetUserInfoAsync(weixinAccessToken.access_token, weixinAccessToken.openid).Result; data.NickName = ConvertString(user.nickname); data.PhotoUrl = user.headimgurl; data.Sex = string.Format("{0}", user.sex); } } } } else { data.ErrorCode = 1; data.ErrorMessage = "授权失败"; } return(data); }